如何解决git rebase什么时候会有冲突?
我一直在阅读该论坛上的几篇文章,progit,Youtube以及一些随机博客以作为基础。
总结此主题的最一般形式是:
- A - B - C Master
\ D - E Topic
我执行:
git checkout Topic
git rebase Master
理想情况是:
- A - B - C - D' - E' Master,Topic
但是,这两个问题是:
- D'= D,E'= E吗?
- 什么是git rebase冲突?
- Rebase确实要在D和E上进行合并,尤其是要使用复杂的输入进行合并。
例如,根据帖子以及我是否正确,转到D时
- HEAD脱离了C
- Git在从A到D的变化与从A到C的变化之间进行比较
- 合并后,git在D',D和E之间进行比较
这让我最困惑。为什么合并涉及两次以上提交?另外,冲突如何出现?
编辑:
运行了一些命令,请参见以下内容:
git init
创建了Random.txt 内容:硕士1
git add Random.txt
git commit -m "Master 1"
创建新分支
git checkout -b rebase_conflict
更改Random.txt 内容:1
git add Random.txt
git commit -m "Conflict 1"
git add Random.txt
git commit -m "Conflict 1"
切换到主控
git checkout master
更改Random.txt 内容:大师2
git add Random.txt
git commit -m "Master 2"
切换分支并重新设置
git checkout rebase_conflict
git rebase master
git add Random.txt
git rebase --continue
-- Master 1 -- Master 2
\ -- Conflict 1 -- Conflict 2
第一次重新设置
-- Master 1 -- Master 2 -- Conflict 1'
\ -- Conflict 1 -- Conflict 2
在此阶段,我期望在“冲突1”的基础上进行新的提交。冲突2和冲突1'之间没有合并冲突吗?
因为冲突1'Random.txt内容:1,而
冲突2 Random.txt内容:2
他们改变了同一行,不是吗?
解决方法
在上面的示例中进行合并或重新建立基础都可能导致合并冲突。可能只有一个或另一个也会有冲突。要了解变基的作用,请考虑下图,该图显示了在Topic
变基后Master
的外观:
Topic: -- A -- B -- C -- D' -- E'
此处的撇号表示D
和E
提交已重新应用到Master
的新基础上。重新提交每个提交时,存在合并冲突的机会。因此,在重新应用N个提交的情况下,可能会有N组合并冲突。另一方面,合并将始终导致最多一组合并冲突。如果您对此感到担忧,那么您可能更喜欢合并而不是重新定级。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。