让我们说master
我禁用了某项功能。
我在分支feature
上处理该功能,所以我在那里有一个特殊的提交$
,只启用该功能。
现在我想将我在feature
中所做的更改合并到master
中,但要保留启用提交。所以它就像
main: A--B--X--Y
feature: A--B--$--C--D
所以让我说我想通过在功能上移动$
提交来实现它:
new feature: A--B--C--D--$
我将如何做到这一点?
答案 0 :(得分:25)
git rebase -i B
,然后将$
移到编辑器中显示的列表末尾。它将作为打开文件中的第一行开始。您也可以完全删除该行,这只会将该提交从您的分支历史中删除。
答案 1 :(得分:6)
如果您希望在feature
上以相同顺序保持提交,则应创建一个新分支并执行以下操作。否则,只需在feature
git rebase -i <sha for commit B>
将commit $移至列表底部
git checkout master
git rebase feature <or the other branch name>
关于这个问题,我不清楚,但如果你根本不想要$,而不是移动它,请在git rebase -i
之后将其删除。虽然你想在新的分支上执行此操作,以便你不要失去它。正如你正在改变历史。
这也假设分支feature
没有被推送到远程,因为重写历史是坏的。