Git合并提交

41

我是git的新手(并且非常喜欢它!)。在开发新分支时,我一直在提交我的应用程序的各种“状态”。现在我需要将它提交进行审查,但不想让所有内容以不同的提交方式(不同的注释和ID)进入。

如何将所有更改推送,就像第一次提交一样?

我在开发新分支时,一直对应用程序进行多次提交。现在我需要将这些更改一次性地提交到代码库中。请问该如何操作?

@Alex,关闭这个问题没问题(四年后?),但我的问题比那个早一个月,稍微有点不公平 :) - DiogoNeves
@Alex 听起来不错 :) - DiogoNeves
2个回答

50
git rebase -i HEAD~5

这个工具允许你交互式地选择最近的5个提交中的哪一个合并到一起;大概是打开编辑器,显示如下内容:

pick xxxx commit1
pick xxxx commit2
pick xxxx commit3
pick xxxx commit4
pick xxxx commit5

你把这个改成

pick xxxx commit1
squash xxxx commit2
squash xxxx commit3
squash xxxx commit4
pick xxxx commit5

这将导致留下两个提交:第一个是将提交1-4合并后形成的,第二个是单独保留提交5(最新的提交)。


4
你的顺序颠倒了——提交记录是按照最早的在前面列出的。 - Josh Lee
@jleedev +1,你说得对,已经修复了。 - stijn
谢谢! :) 我实际上进行了软重置到我所做的第一个提交之前的提交,然后进行了一次全新的提交来保存所有的更改,但是我对我的解决方案并不满意。感谢您提供的这个方法 :) - DiogoNeves

5

我认为保留你的“微提交”是个好主意。你可以从你的特性之前的最后一次提交到当前的HEAD进行差异比较,以便查看整个差异并将其发送进行审查。


这更多是针对特定情况的事情;通常你会想要重新设置基础并使提交更加合理,在提交补丁之前摆脱“糟糕!”的提交。 - alternative
1
这是正确的,但我不喜欢将整个星期/月的开发压缩成一个提交以进行审查。我自己经常使用 --amend - Noufal Ibrahim
你们两个可能都是对的,正如mathepic所说,这需要根据具体情况来考虑。在我的情况下,我将代码发送给他人进行审查,而备份提交在那里并没有太多意义:) 谢谢。 - DiogoNeves
4
可以。但你不必发送一个单独的提交供他们审阅。你可以发送一系列提交 git diff start end 并要求他们审阅整个内容。不是吗? - Noufal Ibrahim

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