(三)Git的常用操作

来源:互联网 发布:网络动漫黑名单 编辑:程序博客网 时间:2024/06/05 05:26

一、工作区、版本库与暂存区

这里写图片描述

  • 工作区(Working Directory):就是你电脑本地硬盘目录。
  • 版本库(Repository):工作区有个隐藏目录.git,它就是Git的本地版本库。
  • 暂存区(stage):一般存放在”git目录”下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

二、创建版本库

Administrator@USERCHI-CG42NPC MINGW64 /e$ mkdir GitRepoAdministrator@USERCHI-CG42NPC MINGW64 /e$ cd GitRepoAdministrator@USERCHI-CG42NPC MINGW64 /e/GitRepo$ git initInitialized empty Git repository in E:/GitRepo/.git/

mkdir:创建一个新目录。
cd:进入目录。
git init:将这个目录变成Git可以管理的仓库,即创建版本库。
Git提示我们这是一个空的仓库。事实上在GitRepo中有一个隐藏的文件.git,这就是我们创建的版本库了,不懂千万不能去修改会删除。

三、添加文件与提交

添加文件

使用命令:git add filename

Administrator@USERCHI-CG42NPC MINGW64 /e/GitRepo (master)$ touch a.txtAdministrator@USERCHI-CG42NPC MINGW64 /e/GitRepo (master)$ git add a.txt

touch:新建一个空文件。
git add 命令只是将文件添加到了暂存区,还未提交至版本库。

提交文件

使用命令:git commit -m " log message" filename

-m后的log message是本次提交的日志信息,最好写有意义的信息。

Administrator@USERCHI-CG42NPC MINGW64 /e/GitRepo (master)$ git commit -m "create a.txt" a.txt[master (root-commit) 2df1117] create a.txt 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 a.txt

此时a.txt就提交到了版本库中了。

四、状态查看

使用命令:
git status

对上述操作的每一步进行状态查看:

新建文件:
这里写图片描述
(文件未添加至暂存区,显示红色)

添加文件:
这里写图片描述
(文件添加至暂存区,但是还未提交,显示绿色)

提交文件:
这里写图片描述
(文件提交至版本库,显示工作区干净)

对其他操作进行状态查看:

修改文件:
这里写图片描述
(文件被修改,显示为红色。需要重新 git add git commit )

删除文件:
删除命令: rm -f filename
这里写图片描述
(文件被删除,显示为红色。这是我们仍然需要进行 git add git commit )

千万不能忘记删除后也有add和commit!!!

五、版本回退

使用版本控制系统的一大好处就是我们可以方便的找回以前版本的文件。

5.1、版本逐步回退

使用命令: git reset --hard HEAD^

当前版本中new.txt的内容:
cat filename:用于浏览文件内容。
这里写图片描述

现在要求回到前一个版本:
这里写图片描述

现在要求继续往前退三个版本:
git reset --hard HEAD^ 命令中HEAD 的上标^的个数表示回退几个版本。
这里写图片描述

如果要求回退100个版本难道要用100个^吗?这显然是不合理的。所以可以写成HEAD~100

5.2、回退至指定版本

使用命令:
首先 git reflog :查看所有分支的所有操作记录;
然后 git reset --hard id:回退到指定id的版本。

使用 git reflog
这里写图片描述

回退到刚刚第一个修改new.txt的版本:
这里写图片描述

六、版本对比

对比工作区与暂存区最新版本的区别:
使用命令: git diff HEAD -- filename
这里写图片描述
显示暂存区最新版本比工作区中的多了一部分”22222222”

对比版本库中两个指定版本的区别:
使用命令: git diff id1 id2
这里写图片描述
说明前面那一版本到后面那一版本要减去一部分”55555555”。
这里写图片描述
说明前面那一版本到后面那个版本要增加一部分。

七、撤销修改

7.1、已修改,未add

这里写图片描述
深夜加班,无心项目,一溜的SB写了上去。
突然惊醒,幸好刚刚写上,还可以更改。这时我们只需要对此文件进行编辑,删除最后一行即可。
我们使用 git status
这里写图片描述
Git告诉我们可以使用命令 git checkout -- filename撤销对工作区的修改。
这里写图片描述

撤销对工作区的修改有两种情况:
1、修改了,还没有添加到缓存区,撤销后,文件恢复到原先版本库的文件;
2、修改了,添加到了缓存区,撤销后,文件恢复到刚刚添加进缓存区时的文件。
总而言之,撤销后,恢复到最近一次 git add git commit时的文件。

7.2、已修改,已add

这里写图片描述
这一次,我不仅仅写了坏话,我还添加到缓存区了。怎么办???
使用 git status看看有什么提示没:
这里写图片描述

让我们使用 git reset HEAD filename:
这里写图片描述
说明 git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

再次使用 git status看看有什么提示没:
这里写图片描述
现在,缓存区是干净的,工作区有修改,我们就又回到了7.1的情况。

7.3、已修改,已add,已commit

这就是简单的版本回退了,参考上方版本回退。

八、Git的分支

在项目开发中,有很多小组共同开发项目,最后所有小组的成果进行组合,总项目完成。这每一个小组就是一个分支。

8.1、查看当前所有分支

使用命令: git branch
这里写图片描述
显示当前的分支有master,主分支。

8.2、新建分支

使用命令: git branch name
这里写图片描述
创建一个名为dev的新分支。

8.3、切换分支

使用命令: git checkout name
这里写图片描述
切换至新建的dev分支。

8.4、删除分支

使用命令: git checkout -d name
这里写图片描述
删除新建的test分支。

8.5、合并分支

使用命令: git merge name
在主分支中查看b.txt:
这里写图片描述
在dev分支中对b.txt进行修改并提交至版本库:
这里写图片描述
切换回主分支,查看b.txt:
这里写图片描述
震惊!!!居然没有更改。
这时就需要进行分支的合并了:
这里写图片描述
将分支合并后就能看见在dev分支的更改了!

九、版本冲突

在主分支中对a.txt进行修改:
这里写图片描述
将修改后的版本提交至版本库。
在dev分支中对主分支的修改显然是毫不知情的,在同一行进行修改:
这里写图片描述
当dev分支与主分支合并时:
这里写图片描述
提示我们有冲突产生。
产生原因,我们在同一行对文件进行修改,当合并时Git不知道谁的放在上面。
解决冲突:不要想当然的删除,要进行人工的干预。
我们查看一下冲突:
这里写图片描述
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
使用 vim命令对文件进行手工的修改就可以提交了。

这里写图片描述
不应该加上文件名。
使用命令git log --graph可以看见分支合并图。

原创粉丝点击