基本的合并冲突处理

如果你在两个分支上都改了同一个文件的同一部分内容,Git就没办法干净的合并这两个分支。举例如果我们工程里只有一个"a.txt,里面的内容是
1195932-20190326092748959-1650734386.png

目前只有两次普通的提交,和主分支master

$ git log --oneline --decorate --graph --all
* e3bf2f8 (HEAD -> master) 提交2
* 6308f04 提交1

1195932-20190326092831116-1775929055.png

现在,我们创建分支B并进入

$ git branch b
$ git checkout b
Switched to branch 'b'

我们修改a文件的内容为
1195932-20190326093020609-2098313001.png
然后提交

$ git log --oneline --decorate --graph --all
* 7d27397 (HEAD -> b) 分支b的第一次提交
* e3bf2f8 (master) 提交2
* 6308f04 提交1

1195932-20190326093447200-852104208.png

然后我们回到master分支

$ git checkout master
Switched to branch 'master'

修改a的内容为
1195932-20190326093305845-1802876784.png

提交

$ git commit -a -m "master分支修改了a"
[master f5ab6c5] master分支修改了a
 1 file changed, 1 insertion(+), 1 deletion(-)

查看现在的分支情况

$ git log --oneline --decorate --graph --all
* f5ab6c5 (HEAD -> master) master分支修改了a
| * 7d27397 (b) 分支b的第一次提交
|/
* e3bf2f8 提交2
* 6308f04 提交1

1195932-20190326093659668-389558041.png

我们尝试合并

$ git merge b
Auto-merging a.txt
CONFLICT (content): Merge conflict in a.txt
Automatic merge failed; fix conflicts and then commit the result.

Git并没有自动创建新的合并提交。它会暂停整个合并过程,等待你来解决冲突。在发生合并冲突后,要查看哪些文件没有被合并,可以执行git status

$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)

        both modified:   a.txt

no changes added to commit (use "git add" and/or "git commit -a")

可以看到,a.txt被both modified(两个分支都修改)了。打开a文件,可以看到
1195932-20190326093935229-1746150525.png
其中HEAD版本的内容显示在上半部分(======以上),b分支的内容则在下半部分。其中HEAD指向的是master分支,因为在执行merge前我们已经切换到了master分支。
我们现在要将a的这五行内容换成
1195932-20190326094254679-1873712958.png
再次提交,Git便会开始合并

$ git commit
[master 8b57566] Merge branch 'b'

再次查看分支

$ git log --oneline --decorate --graph --all
*   8b57566 (HEAD -> master) Merge branch 'b'
|\
| * 7d27397 (b) 分支b的第一次提交
* | f5ab6c5 master分支修改了a
|/
* e3bf2f8 提交2
* 6308f04 提交1

1195932-20190326094713207-579218337.png

至此,冲突解决

转载于:https://www.cnblogs.com/velscode/p/10598305.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值