git 基本使用及命令

版本控制

版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术
·实现跨区域多人协同开发
·追踪和记载一个或者多个文件的历史记录
·组织和保护你的源代码和文档
·统计工作量
·并行开发、提高开发效率
·跟踪记录整个软件的开发过程
·减轻开发人员的负担,节省时间,同时降低人为错误

版本控制分类

集中版本控制

svn

所有的版本数据都保存在服务器上,协同开发者从服务器上更新或上传自己的修改

svn

所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS

分布式版本控制

git

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

git

git与svn最主要区别

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
Git是目前世界上最先进的分布式版本控制系统

git历史

同生活中的许多伟大事物一样,Git诞生于一个极富纷争大举创新的年代
Linux内核开源项目有着为数众多的参与者。绝大多数的Linux内核维护工作都花在了提交补丁和保存到归档的繁琐事务上(1991-2002年间)。到2002年,整个项目组开始启用一个专有的分布式版本控制系统BitKeeper来管理和维护代码。
到了2005年,开发BitKeeper的商业公司同Linux内核开源社区的合作关系结束,他们收回了Linux内核社区免费使用BitKeeper的权力,这就迫使Linux开源社区(特别是Linux的缔造者Linus Torvalds)基于使用BitKeeper时的经验教训,开发出自己的版本系统。也就是后来的Git!

Git是目前世界上最先进的分布式版本控制系统。

Git是免费、开源的,最初Git是为辅助Linux内核开发的,来替代BitKeeper!

Linus_Torvalds

Linux和Git之父林纳斯托沃兹(Linus Benedic Torvalds)1969、芬兰

git下载安装

git官网

淘宝镜像下载

常用Linux命令

pwd:显示当前所在的目录路径

Is(Il):都是列出当前目录中的所有文件,只不过ll列出的内容更为详细

touch:新建一个文件如touch index.js就会在当前目录下新建一个index.js文件

rm:删除一个文件,rm index.js就会把index.js文件删除

mkdir:新建一个目录,就是新建一个文件夹

rm -r:删除一个文件夹,rm- r src 删除src目录

reset重新初始化终端/清屏

clear清屏

history查看命令历史

help帮助

exit退出

#表示注释

git命令

配置用户名: git config –global user.name ‘用户名’

配置邮箱 : git config –global user.email ‘邮箱’

初始化空的git版本库: git init

添加单个文件到暂存区:git add 文件名

添加目录下所有到暂存区:git add .( git add . 当前目录下所有文件添加到暂存区 add和点中间有空格哦)

将暂存区文件提交到版本库:git commit -m ‘提交的内容说明’(内容说明为空则会中止提交)

一些小的修改无需先暂存再提交,直接git commit -am ‘提交内容说明’即可

查看日志:git log

在一行显示简略信息: git log –oneline

查看文件提交前后差别: git log -p 文件名

查看单个文件名的提交日志: git log 文件名

查看工作树、暂存区、最新提交之间的差别: git diff

查看状态: git status

版本回退: git reset –hard 版本号

查看仓库所有的操作日志 git reflog

忽略文件: .gitignore

创建分支 :git branch 分支名

查看分支 :git branch

查看本地仓库分支和远程仓库分支:git branch -a

切换分支 :git checkout 分支名

git checkout - (连字符- 代替分支名也有一样的效果,更加简洁)

创建并切换到其他分支 : git checkout -b 分支名

分支合并步骤:

先切换到目标分支

合并分支:git merge 需要合并的分支

以图表形式查看分支:git log –graph(更加直观)

删除分支(强制删除,慎用) git branch -d(D)

git 配置

查看配置:git config -l

查看本地配置 git config–system —list

全局配置:git config–global –list

设置用户名与邮箱

git config –global user.name “用户名”

git config –global user.email “邮箱地址”

git相关的配置文件

Git\etc\gitconfig :git安装目录下的gitconfig —system 系统级

c:\users\个人主机名\.gitconfig 只适用于当前登录用户的配置 –global全局

git工作原理

工作目录(Working Directory)

暂存区(Stage/Index)

资源库(Repositoryi或Git Directory)

远程的git仓库(Remote Directory)

image-20230615175044396

Workspace:工作区,就是你平时存放项目代码的地方

Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

git的工作流程一般是这样的:
1、在工作目录中添加、修改文件:
2、将需要进行版本管理的文件放入暂存区域:
3、将暂存区域的文件提交到git仓库。

因此,git管理的文件有三种状态:

已修改(modified)

已暂存(staged)

已提交(committed)

git项目创建及克隆

项目初始化,新建git仓库

git init

git clone ‘远程地址’

文件四种状态

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上

Untracked:未跟踪此文件在文件夹中,但并没有加入到git库,不参与版本控制.通过git add状态变为staged

Unmodify:文件已经入库,未修改即版本库中的文件快照内容与文件夹中完全一致.这种类型的文件有两种去处,如果它被修改,而变为odified.如果使用git rm移出版本库,则成为Untracked文件

Modified:文件已修改,仅仅是修改,并没有进行其他的操作.这个文件也有两个去处,通过git add可进入暂存staged状态,使用git checkout则丢弃修改过返回到unmodify状态,这个git checkout即从库中取出文件,覆盖当前修改!

Staged:暂存状态.执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态,执行git reset HEAD filename取消暂存,文件状态为Modified

远程仓库

github / gitee

git-github.png

ssh配置

ssh秘钥组成和作用

shh key的作用:实现本地仓库和github平台之间免登录的加密数据传输:

ssh key由两部分组成:

id_rsa (私钥作,#放于客户端的电脑中即可)
id_rsa.pub(私钥文件,需要配置列github平台中)

私钥加密的信息,只能通过公钥解密。公钥加密的信息,只能通过私钥解密。安全性高.

先在本机生成一个秘钥(以后也可以重新生成,重新配置)

步骤:

1,打开Git Bash

2.粘贴如下的命令

ssh-keygen-trsa-C”你注册账号的邮箱”

3.连续敲击3次回车,即可在C:1 Users\用户名文件夹.ssh目录中生成id_rsa和id_rsa.pub两个文件

4.使用记事本打开id_rsa.pub文件,复制里面的文本内容

5.粘贴配置到github->设置->ssh公钥中即可

项目推送到远程仓库

关联远程仓库

git remote add origin ‘个人仓库地址’

删除远程仓库关联

git remote remove origin

查看远程仓库关联

git remote -v

初次推送

git push -u origin ‘master’(github默认主分支为main)

推送主分支以外的其他分支(dev ,login …..)

git push -u origin ‘dev’

初次推送完成后推送可直接 git push

在远程仓库添加README.MD说明文件后,再次推送会失败,是因为当前分支文件和远程仓库文件不一致

更新本地仓库数据后即可,

代码合并:git push –rebase origin main

再次推送: git push origin main

克隆仓库

git clone ‘个人仓库地址’(默认拉取主分支)

克隆其他分支

方式一

git clone 远程仓库地址 -b 分支名

方式二

git checkout -b dev origin/dev

-b 后的参数是在本地仓库新建和远程仓库一样的dev分支名

新建分支名后的参数是指定远程分支的来源

拉取代码

初次拉取:git pull origin(仓库名) 分支名

之后拉取就直接 git pull