git解决冲突
开心一刻
某人在精神病院实习,忽一神经病患者手持一把菜刀向他追来,这人转头就跑,直到跑到一条死胡同,心想这下完了,那个病人说:给你刀,该你追我了。
写在前面
以前在使用 git 版本控制工具时,最不想看到的事情就是解决冲突,因为在打开冲突文件的时候不知道该怎么解决冲突,听别人在解决冲突的时候感觉是很简单的一件事情,但是在我这里总感觉不得其法。最近解决几次冲突后,才发现解决冲突确实挺简单,只要找对方法。
为什么会发生冲突?
最根本的原因有多个分支修改了同一个文件,在 rebase 或者 merge 的时候 git 不知道该怎么记录这个文件的修改,因此就会冲突。
例如,在 master 分支中修改了 a.txt文件,增加了一行数据,同时在 master 还未提交时创建了一个 dev 分支,在 dev 分支同样修改了 a.txt文件,此时两个分支都进行了 commit 操作,然后要将 dev 分支 rebase 到 master 分支上,此时一定会提示冲突。
解决冲突
解决冲突的时候最好能比较冲突前后的文件内容,幸好一些 IDE 就已经能进行比较了,善用这些 IDE 的内容比较功能能很好地提高工作效率。
- 冲突发生时,git 会进入一个临时的分支,在这个临时分支上,使用 git status 查看一下是哪些文件产生了冲突,避免改错了冲突文件;
- 冲突解决过程
冲突文件的格式基本如下:
<<<<<<<到=======是在当前分支合并之前的文件内容
=======到>>>>>>> 是在其它分支下修改的内容
需要在这个两个版本中选择一个,然后把标记符号也要一起删除
此时在 IDE中打开冲突前后的文件内容对比,然后使用IDE 中的提示进行操作,该保留的内容保留,该删除的内容删除。
- 修改过后,使用git add ./提交修改,然后根据提示继续提交,如果使用的 git rebase 命令,需要使用 git rebase --continue 进行提交。
done~~~