Git rebase冲突
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git rebase冲突相关的知识,希望对你有一定的参考价值。
我正在重新分支。我想将所有提交压缩为一个。
git rebase -i --root
除了第一个以外的所有提交都设置为squash
。
一路走来,有些冲突突然冒出,好像我正在合并。为什么会发生?我以为git只会在一个提交之后再应用一个提交。
答案
这就像合并,因为它是合并。通过示例考虑:
A <- B <- C
<-D
假设您要求将D置于C的基础上。Git会问自己,B和D之间的差异是什么:为了到达D,您必须对B做什么?然后,它将“差异”重播到C上:即,它尝试生成一个new提交,该提交对B执行相同的操作,但附加到C。
嗯,取决于C对B所做的操作,如何做到这一点可能并不明显。 C对B所做的更改可以是“对B进行更改的方式”。如果C将B中文件的第1行更改为“ hello”,而D将B中文件的“第1行”更改为B到“再见”,现在该新提交相对于C应该做什么?
如果您认为答案很明显,也就是说,如果您认为B或D在这方面是“正确的”,那么只需解决冲突。冲突还不错!他们只是回答git担心其答案可能违反您的意愿的问题。
另一答案
到目前为止,最简单的方法是:
git merge base-branch # merge your base branch
git reset--soft base-branch # move branch pointer, do not change files
# at this point, all differences between base branch and your branch are on index
# ready to be committed
git commit -m "my squashed feature"
您已经完成。
以上是关于Git rebase冲突的主要内容,如果未能解决你的问题,请参考以下文章