如何合并两个git提交?

5

我已经在本地创建了2个“git commit”提交。但是我还没有推送,我是否可以编辑我的git并将这两个git commit合并为1个?


可能是重复的问题:如何使用git将我的最后X个提交压缩在一起? - Chris Johnsen
在这里你可以找到一个非常好的答案:https://dev59.com/5HE85IYBdhLWcg3w43sW - Dmitry Trofimov
可能是重复的问题:如何将两个提交合并为一个? - Greg Bacon
3个回答

11

是的,这是可能的:

首先需要找到在你想要处理的那些提交之前的提交。假设我们想合并最后两个提交:

git rebase -i HEAD~3

这将启动一个交互式变基编辑器,使你有可能执行所谓的合并提交,并列出从三个提交之前开始的提交。

请在弹出的编辑器窗口中阅读帮助信息,以了解如何使用交互式变基。 为了取消变基操作,您必须删除文件中的所有行并保存它! 您也不要触碰提交ID和说明 - 只需将提交ID前面的命令从pick更改为“s”(squash)即可。

另一件事是,您绝对正确地提到了您还没有推送。 Git 的第一个且唯一的规则是“不要重写已发布的历史记录”。 也就是说,您不应重新变基、重新排序或删除已经为公共访问而推送的提交。 除非您是该项目上唯一的工作人员,否则始终如此。


4

如果你已经提交了一些代码并且想要在此基础上进行修改,那么可以使用 git commit --amend 命令来修改你最近的一次提交。如果你不想通过 git rebase 来完成这个操作,可以直接使用该命令:

git checkout --soft HEAD~

这将删除最后一次提交,但不会删除更改,然后

git commit --amend -C HEAD

这将使用索引中的新更改来修改最新提交。-C HEAD 标志从头提交中获取提交消息,因此您甚至不需要再次添加消息。

1

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