将一个 git 提交移动到特定提交之前

3
我已经在GIT上提交了一些更改,具体是 a18522,然后拉取并合并主分支,结果出现了一些变化。接着我修复了一个额外的问题,实际上这个问题属于合并之前的部分。
我还没有推送,所以我的更改还没有合并到其他分支中。
在推送之前是否可以将我的修复移动到前面? 我已经提交了所有更改,但还没有推送。它们保存在一个未推送的分支中,叫做ZA
166ff44b CM 9 seconds ago   000:Test(s) after merge                    <-- MOVE THIS COMMIT
18b60812 CM 3 hours ago     Merge branch 'master' into za
efef7a58 MK 20 hours ago    without site and without post steps
fc0540a0 MK 20 hours ago    Moved Jenkins Files to root directory
888b8d5d MK 21 hours ago    Jenkinsfile online editiert mit Bitbucket
1d55252d MK 21 hours ago    Jenkinsfile online editiert mit Bitbucket
ba8fc771 MK 21 hours ago    Jenkinsfile online editiert mit Bitbucket
9e8c2e89 MK 21 hours ago    Jenkinsfile online editiert mit Bitbucket
c6cd623d MK 22 hours ago    Jenkinsfile online editiert mit Bitbucket
c3c5310e MK 22 hours ago    pom.xml online editiert mit Bitbucket
a18b79f2 CM 5 days ago      000:New
52212dbc CM 5 days ago      000:Work list speed improvements

为了让结果如下所示:

18b60812 CM 3 hours ago     Merge branch 'master' into za
efef7a58 MK 20 hours ago    without site and without post steps
fc0540a0 MK 20 hours ago    Moved Jenkins Files to root directory
888b8d5d MK 21 hours ago    Jenkinsfile online editiert mit Bitbucket
1d55252d MK 21 hours ago    Jenkinsfile online editiert mit Bitbucket
ba8fc771 MK 21 hours ago    Jenkinsfile online editiert mit Bitbucket
9e8c2e89 MK 21 hours ago    Jenkinsfile online editiert mit Bitbucket
c6cd623d MK 22 hours ago    Jenkinsfile online editiert mit Bitbucket
c3c5310e MK 22 hours ago    pom.xml online editiert mit Bitbucket 
166ff44b CM 9 seconds ago   000:Test(s) after merge                    <-- TO HERE 
a18b79f2 CM 5 days ago      000:New
52212dbc CM 5 days ago      000:Work list speed improvements

3
git rebase -i 允许移动提交记录。你可能应该先拉取主分支并将你的分支变基到它上面。 - choroba
这是一个非常好的参考文章,适用于像这样的情况:如何使用Git撤消几乎所有操作 - Mehdi
@Mehdi,将其作为答案发布,我会接受它。 - Jim
1个回答

1
您可以使用交互式模式下的rebase重新排序提交记录。
通过输入以下命令来完成此操作:
git rebase -i a18b79f2

你的默认文本编辑器将被打开,显示当前顺序的提交列表。

只需将提交行剪切/粘贴到所需位置并保存即可。

然后你就可以开始使用了。

如需更多信息,请查看git手册中的rebase,或者这篇优秀的参考文章:如何使用Git撤销(几乎)所有操作

P.S. 交互式rebase还可用于合并提交、删除提交和更新提交消息等操作...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接