likes
comments
collection
share

Git系列(三):分支管理即解决冲突

作者站长头像
站长
· 阅读数 5

前言

先让我们来回顾下该系列已经讲了什么呢?

现在我们要来接触最重要的分支管理。分支有什么用呢?让我们想想实际编程中,我们很多人一起去完成一个项目,那我们的代码应该怎么汇总呢?这时候其实就需要分支,一人开一个分支,在自己的分支编程,做完一个小的功能后,合并到主线,这样才能达到时间利用最大化。接下来让我们着手开始吧!!

创建和合并分支

第一步自然是要去创建一个分支,语法如下: git branch 'name' ,取个自己想要的名字,但一个团队最好还是遵循一些规范,关于分支取名的规范和更多用法(Git Flow)可以去阅读下这篇文章:Git 在团队中的最佳实践 。这里我们取名为 develop ,完整代码即:git branch develop 。接下来让我们切换到 develop 分支去进行下一步操作,可以执行 git checkout develop 。执行完结果如下: Git系列(三):分支管理即解决冲突

这里我们也可以用 git checkout -b develop ,它等同于上面两步。 第二步让我们在 develop 分支操作一下,这里我删除了 new.md 文件里的内容,再提交一下代码。具体的操作如下: Git系列(三):分支管理即解决冲突

第三步让我们切换回 master 分支,发现 new.md 的内容还在,这是因为我们还没有把 develop 分支合并过来,执行代码: git merge develop 。git merge后面跟的自然就是你想合并到当前分支的分支名,这里是 develop 。执行后在查看new.md文件,很显然该文件已经空了。至此,创建和合并一个分支已经解决了。如果你这个 develop 分支的任务已经完成,那么就可以把他删除掉:git branch -d develop 。 但实际操作中显然没有这么容易,如果你在不同分支提交了对同一处代码的修改或者几个人同时修改一个文件的一行代码,那么就会产生冲突(十分头疼),接下来让我们看看怎么去解决这种常见的问题!

解决本地冲突

还是利用 develop 分支来讲解,如果前面已经删除,可以自己再敲一遍!首先我们在 develop 分支修改 new.md 文件的值为 master and develop 。然后提交一下。再切换回 master 分支,也修改 new.md 文件的值,改为: only master 。也提交一下。全部流程代码如下: Git系列(三):分支管理即解决冲突

接下来让我们把 develop 分支合并合并到 master 分支,会出现什么呢? Git系列(三):分支管理即解决冲突

很显然失败了,因为发生了冲突,让我们看下此时的 new.md 文件的内容是什么呢? Git系列(三):分支管理即解决冲突

可以看到Git用 <<<<<<<=======>>>>>>>标记出不同分支的内容,我们可以根据实际情况手动去修改冲突,再提交代码。至此本地的冲突就解决了。但这种情况出现的会比较少,而接下来多人远程协作出现的冲突才是重头戏!!

解决多人协作过程中的冲突

常见场景如下:你的某一个伙伴获取了和你同一个仓库的代码,并修改了其中的一些代码,然后将其推送到了远端仓库。这时候你也修改了一些代码,并且其中的代码会跟他有些重复,这时候如果你也要推送代码到远程仓库,就会推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用 git pull 把最新的提交从远程仓库抓下来,然后,在本地合并,解决冲突,再 git push 。所以我们平时开发中最好养成习惯,每天开启电脑先拉取 git pull 下远端的代码,再开始你的修改。 至此我平时遇到的一些常见情况及解决方法已经宣传完毕,如果后续有遇到更多的问题,会不断更新进来,或者大家有遇到的疑难杂症也可以在评论区留言!