我已经在本地创建了2个“git commit”提交。但是我还没有推送,我是否可以编辑我的git并将这两个git commit合并为1个?
我已经在本地创建了2个“git commit”提交。但是我还没有推送,我是否可以编辑我的git并将这两个git commit合并为1个?
是的,这是可能的:
首先需要找到在你想要处理的那些提交之前的提交。假设我们想合并最后两个提交:
git rebase -i HEAD~3
这将启动一个交互式变基编辑器,使你有可能执行所谓的合并提交,并列出从三个提交之前开始的提交。
请在弹出的编辑器窗口中阅读帮助信息,以了解如何使用交互式变基。 为了取消变基操作,您必须删除文件中的所有行并保存它! 您也不要触碰提交ID和说明 - 只需将提交ID前面的命令从pick更改为“s”(squash)即可。
另一件事是,您绝对正确地提到了您还没有推送。 Git 的第一个且唯一的规则是“不要重写已发布的历史记录”。 也就是说,您不应重新变基、重新排序或删除已经为公共访问而推送的提交。 除非您是该项目上唯一的工作人员,否则始终如此。
如果你已经提交了一些代码并且想要在此基础上进行修改,那么可以使用 git commit --amend
命令来修改你最近的一次提交。如果你不想通过 git rebase 来完成这个操作,可以直接使用该命令:
git checkout --soft HEAD~
这将删除最后一次提交,但不会删除更改,然后
git commit --amend -C HEAD
-C HEAD
标志从头提交中获取提交消息,因此您甚至不需要再次添加消息。这里有另一篇关于压缩提交记录的好文章:http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html