Linux下Git的分支冲突

版本中何时出现冲突

从原始的分支master中分出分支feature1,对readme.txt文件进行修改,原始文件如下:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Creating a new branch.

在feature1分支中添加一行:

Creating a new branch is quick AND simple.

然后切换回master分支,在readme.txt中也添加一行:

Creating a new branch is quich & simple.

当前情况下,master分支和feature1分支中,都比分支分出去之前更新了一个版本,我们对当前的版本进行合并,输出如下:

ycwang@Y700:~/learngit$ git merge feature1
自动合并 readme.txt
冲突(内容):合并冲突于 readme.txt
自动合并失败,修正冲突然后提交修正的结果。

合并失败了,还提示合并过程中在readme.txt文件发生了冲突,我们查阅当前的git状态:

ycwang@Y700:~/learngit$ git status
位于分支 master
您的分支领先 'origin/master' 共 2 个提交。
  (使用 "git push" 来发布您的本地提交)

您有尚未合并的路径。
  (解决冲突并运行 "git commit")
  (使用 "git merge --abort" 终止合并)

未合并的路径:
  (使用 "git add <文件>..." 标记解决方案)

	双方修改:   readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

输出提示我们当前处于master分支,当前本地的版本还没有push到远程库,并且本地比远端领先两个版本。之后提示有尚未合并的路径,有两个解决方案,可以先人工解决冲突然后再提交,或者使用git merge --abort取消合并操作。最后,提示了此次合并中出现冲突的文件。我们再次打开这个文件:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Creating a new branch.
<<<<<<< HEAD
Creating a new branch is quich & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1           

两个分支下对这个文件的修改,均被合并进入这个文件,还标记出来了哪部分来自哪个分支。我们直接把内容修改为如下:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Creating a new branch.
Creating a new branch is quich and simple.

按照提示重新添加并提交:

git add readme.txt
git commit -m "comflict fixed"

再查看当前版本库下的情况:

ycwang@Y700:~/learngit$ git branch 
  feature1
* master
ycwang@Y700:~/learngit$ ls
readme.txt
ycwang@Y700:~/learngit$ git status
位于分支 master
您的分支领先 'origin/master' 共 4 个提交。
  (使用 "git push" 来发布您的本地提交)

无文件要提交,干净的工作区

分支feature1还存在,但是冲突消失了。我们也可以用带参数的git log查看分支的合并情况:

ycwang@Y700:~/learngit$ git log --graph --pretty=oneline --abbrev-commit
*   e1c955b (HEAD -> master) conflict fixed
|\  
| * d0e6106 (feature1) AND simple
* | 6536364 & simple
|/  
* 4c2b68d branch test
* 5d9ff40 (origin/master) append GPL
* 4c93eef wrote a readme file

他记录了我们全部的修改记录,其中分支出现冲突的部分被用两个分支标记出来,现在他们合并成了同一个分支。最后,我们只需要删除feature1分支

git branch -d feature1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值