2011-03-02 86 views
22

我很好奇这种行为,也许它只是因为我主要来自使用SVN和集市。 (我正在学习的git凭借着出色的GitHub的接口。)默认情况下,为什么git会在合并后提交?

似乎直觉上我,仿佛这将是

git merge [branch] --no-commit

更好的为默认,鼓励人们作出确保合并在提交之前按照他们希望的方式进行。

+2

顺便说一句,如果出现问题,git合并将最终与冲突。此外,如果由于特定的原因,你想看到合并uncommited引入的变化,你可以在成功的“git合并”后立即“git reset HEAD ^”,这将退回到一个提交,离开所有上次提交更改(这将是一个合并提交)uncommited。 – 2011-03-02 10:02:07

回答

25

Linus Torvalds在创建Git时设置的目标是使所有可以自动解决的合并... FAST。看到他的2007 Google Tech Talk: Linus Torvalds on Git (transcript)
即使。在几秒钟内完成数百次合并。

因此,默认情况下“--no-commit”几乎可以达到这个目的。

使用--no-commit执行合并,但假装合并失败并且不自动提交,以使用户有机会在提交之前检查并进一步调整合并结果。从Linus's talk (video)

提取物:

唯一重要的事情是你的速度有多快可以合并
在git中,你可以合并......我每天合并多达22,000个文件,如果一个合并需要超过5秒,我会感到不快,并且所有这5秒只是下载所有的差异,而不是差异但它是两棵树之间的三角洲,合并本身不到半秒。
我不必考虑这个问题。
[...]这种表现实际上改变了你的工作方式。

+0

好的,基本上假设是,如果你正在合并你想要做的事情,并且你想尽快完成它, – Will 2011-03-02 07:26:33

+2

@ will:是的,但不要忘记其他工作流程:在合并前重新分配工作(这会导致快速合并:http://stackoverflow.com/questions/804115/git-rebase-vs - 合并/ 804178#804178) – VonC 2011-03-02 07:31:34

+0

视频从你在这个答案中引用的谈话 http://www.youtube.com/watch?v=4XpnKHJAok8&feature=player_detailpage#t=3118s – Will 2012-06-03 07:45:07

相关问题