git rebase --continue 没有变化

git rebase --continue no changes

我有两个具有两个特征的分支:banch_1branch_2branch_2 使用 branch_1 中的功能。 我在 branch_1 中进行了更改,并希望在 branch_1 上重新设置 branch_2 的基线,以将 branch_1 的更改更改为 branch_2

所以,我正在查看 branch_2:

git checkout branch_2

并尝试基于 branch_1 进行变基:

git rebase branch_1

之后我得到两个文件的 'Merge conflict'。所以我运行

git mergetool -t meld

并解决冲突,从 branch_1 中选择更改。

我正在保存文件并转到终端,输入 git status 并看到 git 索引没有变化。接下来我 运行 git rebase --continue 并获得

No changes - did you forget to use 'git add'? 

错误。但是没有什么可以补充的! 我键入 git log 并看到来自 branch_1 的提交,但没有来自 branch_2.

的提交

我做错了什么?

如果我理解正确,当您遇到合并冲突时,您将接受来自 branch_1 的所有更改,这意味着来自 branch_2 的特定提交是无关紧要的 - 中的任何更改该提交与来自 branch_1.

的传入更改相同

当git在说

No changes - did you forget to use 'git add'?

它告诉您您尝试应用的提交不会对存储库进行任何更改,因此它没有理由存在。

对此的简单解决方案是 git rebase --skip,正如@C-Otto 的评论中所建议的那样,它只是说 "ignore this commit and move on"。这将跳过您当前正在处理的提交,并继续进行后续提交。

您可能还会发现使用交互式变基 (git rebase -i) 更容易,它首先会向您显示它将应用的提交列表,并为您提供各种选项来处理每个单独的提交.在这种情况下,如果您确定一个不再相关的提交,您可以提前跳过它,这样您就不会在第一时间看到冲突。