Git:移动提交"在顶部"

Adr*_*iuk 24 git branch git-rebase

让我们说master我已禁用某项功能.我在分支上处理该功能feature,所以我在$那里有一个特殊的提交,只是启用该功能.现在,我要合并我确实在变化featuremaster,但保留能够提交出.所以它就像

main:    A--B--X--Y
feature: A--B--$--C--D
Run Code Online (Sandbox Code Playgroud)

因此,我想通过$在功能顶部移动提交来实现它:

new feature: A--B--C--D--$
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

Car*_*rum 25

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

  • 您还可以使用“git rebase -i $~1”,相当于“$~1”是“$”之前的提交,即“B” (3认同)

Sch*_*eis 6

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

git rebase -i <sha for commit B>
Run Code Online (Sandbox Code Playgroud)

将commit $移动到列表的底部

git checkout master
git rebase feature <or the other branch name>
Run Code Online (Sandbox Code Playgroud)

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

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