您的位置:首页 > 其它

Git12--解决冲突

2017-04-20 11:34 232 查看
人生不如意之事十之八九,合并分支往往也不是一帆风顺的。

准备新的
feature1
分支,继续我们的新分支开发:

$ [code]git checkout -b feature1

Switched[code] to a new branch
'feature1'[/code]

修改readme.txt最后一行,改为:

Creating a
new
branch is quick
AND
simple.


feature1
分支上提交:

$ gitaddreadme.txt

$ git
commit -m "ANDsimple"[/code]
[feature1 75a857c] ANDsimple

1 file changed, 1insertion(+),1deletion(-)


切换到
master
分支:

$ gitcheckout master

Switched to branch 'master'

Your branch is ahead of 'origin/master' by 1
commit.[/code]

Git还会自动提示我们当前
master
分支比远程的
master
分支要超前1个提交。

master
分支上把readme.txt文件的最后一行改为:

Creating a
new
branch is quick&simple.


提交:

$ [code]git addreadme.txt

$ [code]git commit -m
"&simple"[/code]
[master
400
b40
0
] &simple

1[code] file changed,
1
insertion(+),
1
deletion(-)


现在,
master
分支和
feature1
分支各自都分别有新的提交,变成了这样:

这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:

$ [code]git merge feature1

Auto[code]-mergingreadme.txt

CONFLICT[code] (content)
:Merge
conflict
in
readme.txt

Automatic[code] merge failed; fix conflicts
andthen
commit the result.


果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。
git
status
也可以告诉我们冲突的文件:

$ [code]git status

# On branch master

# Your branch is ahead of 'origin/master' by 2 commits.

#

# Unmerged paths:

#   (use "git add/rm <file>..." as appropriate to mark resolution)

#

#       both modified:     readme.txt

#

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


我们可以直接查看readme.txt的内容:

Git is a distributed version control system.

Git is free software distributed under the GPL.

Git has a mutable index called stage.

Git tracks changes of files.

<<<<<<<HEAD

Creatinganewbranchisquick &simple.

=======

CreatinganewbranchisquickANDsimple.

>>>>>>> feature1


Git用
<<<<<<<
=======
>>>>>>>
标记出不同分支的内容,我们修改如下后保存:

Creating a
new
branch is quick
and
simple.


再提交:

$ [code]git addreadme.txt

$ [code]git commit -m
"conflict fixed"[/code]
[master
59
bc1cb]conflictfixed


现在,
master
分支和
feature1
分支变成了下图所示:

用带参数的
git log
也可以看到分支的合并情况:

$ gitlog --graph --pretty=oneline --abbrev-commit

*  
59
bc1cbconflictfixed

|\

| *
75
a857c
AND
simple

* |
400
b400 &simple

|/

* fec145a branch test

...


最后,删除
feature1
分支:

$ [code]git branch -d feature1

Deleted[code] branch feature1 (was
75
a857c).


工作完成。


小结

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

git log --graph
命令可以看到分支合并图。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: