git rebase - 继续没有变化

Pau*_*aul 19 git git-rebase

我有两个分支,有两个功能:banch_1branch_2. branch_2使用来自的功能branch_1.我所做的变化branch_1,并希望变基branch_2branch_1从中获取改变branch_1branch_2.

所以,我正在检查branch_2:

git checkout branch_2
Run Code Online (Sandbox Code Playgroud)

并尝试在branch_1上重新定义:

git rebase branch_1
Run Code Online (Sandbox Code Playgroud)

之后我得到两个文件的'合并冲突'.所以我跑了

git mergetool -t meld
Run Code Online (Sandbox Code Playgroud)

并解决这些冲突,从中选择更改branch_1.

我正在保存文件并转到终端,输入 git status并看到git索引没有变化.接下来,我跑git rebase --continue和获取

No changes - did you forget to use 'git add'? 
Run Code Online (Sandbox Code Playgroud)

错误.但没有什么可补充的!我键入git log并查看提交branch_1但没有提交branch_2.

我做错了什么?

Dav*_*ave 26

如果我理解正确,当您收到合并冲突时,您接受所有更改branch_1,意味着该特定提交与此branch_2无关 - 该提交中的任何更改都与来自的传入更改相同branch_1.

当git说

没有变化 - 你忘了使用'git add'吗?

它告诉你,你试图申请的提交不会对仓库进行任何更改,因此它没有理由存在.

对此的简单解决方案是git rebase --skip,正如@ C-Otto的评论所暗示的那样,只是说"忽略这个提交并继续前进".这将跳过您当前正在处理的提交,然后转到后续提交.

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