Git学习笔记4 - 什么是分支?

到现在,我们已经知道如何在本地以及远程使用git,但整个过程我们都没有谈及branch这个东西,由于在git初始化的时候建立的分支就是master,所以我们一直操作并且提交的也是master分支,那分支到底有什么用呢?

实际上,在多人协作以及本地使用git时,分支是一个非常重要的东西。故名思意,分支就是在一个“主线”上面,在某一个“点”分开,并且在某一“点”做的一个延伸、一个“分线”。

有“分”,自然有“合”,在某个“点”我们又可以把各个分支合并起来,汇聚到这条“主线”上面。

就像一条奔腾的大河,在某个节点的时候可能会分出很多道小溪,而这些小溪在自己的运动轨道上漂流着,并不会影响其他小溪(大河)的运作,而在某个节点,又能重新和其他小溪(大河)汇聚起来。

这样一想,分支在项目开发中就显得极为重要了。因为在项目开发中,如果每个人都用master这条进行操作,那会让主线变得十分混乱,我们应该在某个节点,每个人分出一条线对项目进行修改,然后再在某个时间点合并到主工作线上,这样既清晰又减少了项目合作中出现的混乱。

git branch

使用git branch [name]命令可以建立一个名为name的分支

使用git branch命令可以查看现在的分支情况,前面带有*表示当前正在操作的分支.

git checkout (branchname)

使用git checkout (branchname)可以切换分支。

我们此时对test.txt做一些修改,比如在最后一行加入"Hello,edliu!"并且将其上传到本地版本库中。

因为我们上传的是test分支,对于master分支,仍然还停留在上一个操作阶段,我们可以从git log命令清晰看出来。

命令行告诉我们此时HEAD指针指向test分支。

现在我们使用git checkout master将分支切换为master,我们会发现刚刚在最下面加的Hello,edliu并未存在。

git merge

可以使用git merge [name]将名为name的分支合并到当前分支。

此时打开test文件,最下面一行就出现了Hello,edliu!

处理合并冲突

我们在master分支下对文件进行一下修改,并且上传到本地版本库中。

我们再切换为test分支对文件进行一下修改,并且上传到本地版本库中。

此时,我们尝试在test分支中将master分支的内容合并过来,但是命令行告诉我们这个合并在test.txt这个文件上出现了冲突,并且告诉我们处理冲突后再进行合并。

上几节已经讲过,我们可以用git diff来查看二者的冲突在哪。

此时告诉我们HEAD->指针指向的分支(test)和master分支的冲突是因为一个是Goodbye git!,一个是hello git

发生冲突时,我们只要将发生冲突的文件修改为我们需要的正确的版本,再进行addcommit就解决了冲突。

合并冲突就这样成功解决了!

也就是说,在发生冲突的时候,解决冲突实际上就是对当前文件重新再进行一次commit操作。

我们可以通过git log --graph命令来查看合并流程图。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2022 Ed Liu
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信