牛儿和马儿使用git一个协同开发一个项目
某个时刻牛儿想要合并马儿的提交,这个时候有几种可能发生的情况
- 顺利合并,没有冲突
- 牛儿编辑了一个文件,还没有添加(add)或已添加但未提交,在此之前马儿对这个文件也做了改动,此时牛儿对马儿的合并会 中断并回滚,git 提示:
error: Your local changes to the following files would be overwritten by merge:
冲突的文件
Please commit your changes or stash them before you merge.
Aborting
Updating <版本哈希1>..<版本哈希2>
此时跟什么事情都没有发生过一样
- 牛儿编辑了一个文件,并且已提交,在此之前马儿对这个文件也做了改动,此时牛儿对马儿的合并会中断但并不回滚 ,git 提示:
Auto-merging 1
CONFLICT (content): Merge conflict in 1
Automatic merge failed; fix conflicts and then commit the result.
此时使用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: 1
牛儿有4种选择:
- 直接放弃合并: git merge --abort,回到合并前的状态,好像什么事情都没有发生过一样
- 所有冲突的地方全部接收马儿的更改: git checkout --theirs .
- 所有冲突的地方全部接收牛儿自己的更改:git checkout --ours .
- 自定义所有冲突的地方
根据提示:无论选择2、3和4,操作完了之后都需要 git add 来告诉git已经解决冲突,再用commit提交一个新的版本
网友评论