Git - 合并两个不按顺序执行的提交 - 已将提交推送到远程仓库

时间:2015-04-02 09:46:58

标签: git merge commit rebase

我已经读过关于合并序列中的两个提交,但是如何合并两个彼此不直接的提交。

就像,我当前使用旧提交提交

提交是在seq

er34rwe commit4
rtt45y5 commit3
iwe8j89 commit2
4E89E8J commit1

现在,我需要将commit4与commit2合并,并可能将结果放在commit2的位置。所以结果是

rtt45y5 commit3
iwe8j89 commit2_4 <-- new one
4E89E8J commit1

如果提交已经推送到远程存储库,有没有办法做到这一点?和远程存储库以获取新历史记录。即两个提交都显示为一个。

1 个答案:

答案 0 :(得分:1)

您可以使用交互式rebase。假设er34rwe是最早的提交,请执行以下操作:

git rebase -i er34rwe

这将使用以下视图启动您的编辑器:

pick er34rwe commit4
pick rtt45y5 commit3
pick iwe8j89 commit2
pick 4E89E8J commit1

然后,您可以通过简单地移动线条来更改这些提交的顺序:

pick rtt45y5 commit3
pick er34rwe commit4
pick iwe8j89 commit2
pick 4E89E8J commit1

然后您还可以将pick更改为另一种模式(在编辑器底部对它们进行了解释)以更改它们。在您的情况下,您希望将commit2更改为squash以将其合并到上一个(commit4 - 文件从顶部/最旧到最低/最新提交读取):< / p>

pick rtt45y5 commit3
pick er34rwe commit4
squash iwe8j89 commit2
pick 4E89E8J commit1

然后保存并退出编辑器以启动该过程。然后Git将重新提交所有提交并提示您手动合并您正在组合的两个提交的提交消息。