Git(四):分支管理

一、分支概述

分支管理为我们提供了多人同时开发的便利。假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

二、分支管理本质

每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:
在这里插入图片描述

每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。

当我们创建新的分支,例如创建新的分支名为testing时,Git就新建一个指针叫testing,指向master相同的提交。当我们切换分支时,再把HEAD指向testing,就表示当前分支在testing上:
在这里插入图片描述
切换到testing分支后,对工作区的修改和提交就是针对testing分支了,比如新提交一次后,testing指针往前移动一步,而master指针不变:
在这里插入图片描述
假如我们在testing上的工作完成了,而master分支的内容没有改变,就可以把testing合并到master上。就是切换回master分支后,直接把master指向testing的当前提交,就完成了合并:
在这里插入图片描述
另一种情况是当master分支和testing分支都各自有了新的提交,变成这样:
在这里插入图片描述
这种情况下当我们切换回master分支,进行合并时,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突。当有冲突时就必须需要我们手动解决冲突后,再自行提交。提交成功后就类似以下这样:
在这里插入图片描述

三、分支操作的命令

1.创建分支

git branch [分支名]

创建一个新的名为hot_fix的分支:
在这里插入图片描述
另外还可以使用git checkoutgit switch命令来创建并切换分支

git checkout -b [分支名]
git switch -c [分支名]
#上面的命令相当于以下两个命令:
git branch [分支名]
git checkout [分支名]

2.查看分支

git beanch -v

查看所有的分支,当前分支前面会标一个*号,当前正处在master分支:
在这里插入图片描述

3.切换分支

git checkout [分支名]
#新版本的Git提供了git switch来切换分支,这个命令更容易理解。
git switch [分支名]

切换到hot_fix分支上:
在这里插入图片描述

4.合并分支

要合并分支,首先要切换到接受修改的分支上,再执行merge命令进行合并,命令如下:

git merge [分支名]

使用示例;
在test.txt文件中进行修改并提交,然后切换分支回到master中:
在这里插入图片描述
进行合并操作,然后查看文件内容:
在这里插入图片描述

5.解决冲突

合并后发生冲突的情况示例:
在这里插入图片描述
解决冲突:
此时我们必须手动解决冲突后提交,这里Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,首先需要确定如何修改后编辑文件,需要删除特殊符号和多余内容。
在这里插入图片描述
然后将文件提交到暂存区然后提交,这里的提交不能添加具体的文件名:
在这里插入图片描述
这样就解决了分支冲突的情况。

使用git log加上相应参数来查看分支合并情况:

git log --graph --pretty=oneline --abbrev-commit

在这里插入图片描述

6.删除分支

删除分支的命令,如下:

git branch -d [分支名]

删除掉分支名hot_fix的分支:
在这里插入图片描述

四、总结

分支管理的相关命令:

  • 查看分支:git branch
  • 创建分支:git branch [分支名]
  • 创建+切换分支:git checkout -b [分支名]git switch -c [分支名]
  • 切换分支:git checkout [分支名]git switch [分支名]
  • 合并某分支到当前分支:git merge [分支名]
  • 删除分支:git branch -d [分支名]

参考:创建与合并分支

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章