git解决冲突
1.概述
- git解决冲突有两种办法: 1. rebase2. merge
- 先说结论,解决冲突时尽量使用rebase。原因是因为rebase可以使得提交历史更加清晰,代码更加健壮。
- rebase与merge的区别: 1. rebase:重定义起点,相当于将冲突分支整体“迁移”至另一分支上。2. merge:聚合分支,将冲突分支和另一分支“聚合”合并至新节点上。 (图片出处见参考)
2.rebase使用
- 背景:分支diverge之后,直接git push会失败(类似于上图)。此时需要合并分支解决冲突。
- 使用: 1. git pull --rebase:down代码到本地。重定位到没有冲突的节点;本地此节点之后的commit代码都被暂时取消。2. 解决冲突。发生冲突的文件会被红色感叹号标记;发送冲突的代码会用>>、==、<<符号记录。通过删除冲突代码解决冲突。3. 提交文件。git add 修改冲突后的文件。4. 继续rebase。git rebase --continue。合并分支的节点继续前移,直到下一个冲突节点,然后重复2、3步骤继续解决冲突,直到解决所有冲突。5. 完成rebase。解决所有冲突后,被暂时取消commit的代码将自动重新恢复conmmit状态。6. git push。重新提交代码。
- 解决冲突示例: 以下为例,上半部分是master分支的修改,下半部分是develop分支的修改,删除develop部分,保留上半部分即可。
<<<<<<<<<<<<<< Head
This is master.
==========
This is develop.
>>>>>>>>>>>>> Develop
3.rebase相关命令
- git rebase --continue:继续解决冲突。
- git rebase --skip:跳过这一次的本地的有冲突的commit。
- git rebase --abort:放弃rebase,恢复到之前状态。
- git stash:将当前暂存或未暂存(没有commit)的代码储藏起来。
- git stash pop:将储藏的代码释放。
4.参考
参考1:git merge和git rebase的区别, 切记:永远用rebase
参考2:git的冲突解决–git rebase之abort、continue、skip
本文转载自: https://blog.csdn.net/fantasty9413/article/details/126728899
版权归原作者 fantasty9413 所有, 如有侵权,请联系我们删除。
版权归原作者 fantasty9413 所有, 如有侵权,请联系我们删除。