42

假设master我禁用了一项功能。我在 branch 上处理该功能feature,因此我在那里有一个特殊的提交$,它只启用了该功能。现在我想将我所做的更改合并feature到中master,但保留启用提交。所以就像

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

因此,假设我想通过将$提交移到功能之上来做到这一点:

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

我该怎么做呢?

4

2 回答 2

46

git rebase -i B,然后移至$编辑器中显示的列表末尾。它将作为打开文件的第一行开始。您也可以完全删除该行,这只会将该提交从您的分支历史记录中删除。

于 2013-01-24T17:51:44.390 回答
10

如果您想让您的提交保持相同的顺序,feature您应该创建一个新分支并执行以下操作。否则就这样做feature

git rebase -i <sha for commit B>

将提交 $ 移动到列表底部

git checkout master
git rebase feature <or the other branch name>

我不清楚这个问题,但如果你根本不想要 $ ,而不是移动它之后删除它git rebase -i虽然你会想在一个新的分支上这样做,这样你就不会丢失它。因为你正在改变历史。

这也假设分支feature没有被推送到远程,因为重写历史是不好的。

于 2013-01-24T17:53:00.437 回答