我在本地制作了2个'git commit'。但是我没有推动,是否有可能编辑我的git并将这些2 git commit合并为1?
答案 0 :(得分:11)
是的,有可能:
您必须首先找到您要使用的提交之前的提交。想象一下,我们想要结合最后两次提交:
git rebase -i HEAD~3
这将启动一个交互式rebase的编辑器,它可以让你执行所谓的压缩提交,它将列出从三次提交之前开始的提交。
请阅读已启动的编辑器窗口中的帮助消息,以了解如何使用交互式rebase。 要取消rebase操作,您必须从文件中删除所有行并保存! 您也不要触摸提交ID和描述 - 您只需将提交ID之前的命令更改为“s”(壁球)
另一件事是你绝对正确地提到你还没推。第一个且只有一个git规则是“不要重写已发布的历史记录”。即您不要对已经推送进行公共访问的提交进行变基,重新排序或删除。 这种情况适用于所有情况,除非您是唯一负责该项目的人。
答案 1 :(得分:4)
如果您已提交并希望对其添加一些更改,则可以使用git commit --amend
来修改上次提交。如果你想这样做而不经历git rebasing的所有麻烦,那么:
git checkout --soft HEAD~
这将删除最后一次提交而不删除更改,然后
git commit --amend -C HEAD
将使用索引中的新更改修改最新提交。 -C HEAD
标志从头提交中获取提交消息,因此您甚至不需要再次添加消息。
答案 2 :(得分:1)