Git:移动提交"在顶部"

时间:2013-01-24 17:47:04

标签: git branch git-rebase

让我们说master我禁用了某项功能。 我在分支feature上处理该功能,所以我在那里有一个特殊的提交$,只启用该功能。 现在我想将我在feature中所做的更改合并到master中,但要保留启用提交。所以它就像

main:    A--B--X--Y
feature: A--B--$--C--D

所以让我说我想通过在功能上移动$提交来实现它:

new feature: A--B--C--D--$

我将如何做到这一点?

2 个答案:

答案 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没有被推送到远程,因为重写历史是坏的。