假设我在master
分支上禁用了某个功能。
我在feature
分支上开发该功能,所以我有一次特殊提交 $
,仅启用该功能。
现在我想将我在feature
中所做的更改合并到master
中,但是不包括启用功能的提交。就像这样:
main: A--B--X--Y
feature: A--B--$--C--D
所以假设我想通过把 $
提交移动到 feature 的顶部来实现它:
new feature: A--B--C--D--$
我该如何着手做这件事呢?
假设我在master
分支上禁用了某个功能。
我在feature
分支上开发该功能,所以我有一次特殊提交 $
,仅启用该功能。
现在我想将我在feature
中所做的更改合并到master
中,但是不包括启用功能的提交。就像这样:
main: A--B--X--Y
feature: A--B--$--C--D
所以假设我想通过把 $
提交移动到 feature 的顶部来实现它:
new feature: A--B--C--D--$
我该如何着手做这件事呢?
git rebase -i B
,然后将$
移动到在编辑器中显示的列表的末尾。它将作为打开的文件的第一行开始。您也可以完全删除该行,这将从您的分支历史记录中删除该提交。
git rebase -i $~1
,它等同于$~1
是$
之前的提交,即B
。 - yunzen如果您希望在feature
上按照相同的顺序保留提交记录,您应该创建一个新的分支并执行以下操作。否则,请在feature
上执行以下操作。
git rebase -i <sha for commit B>
将提交 $ 移动到列表底部
git checkout master
git rebase feature <or the other branch name>
我在问题上不太清楚,但如果你根本不想要 $,而不是移动它,请在git rebase -i
之后删除它。不过,你需要在一个新分支上做这个操作,以防丢失内容。因为你正在改变历史记录。
这还假设分支feature
没有被推送到远程,因为重写历史记录是不好的。
-Xours
和-Xtheirs
也是你的好朋友。 - WEBjuju