我很好奇这种行为,也许它只是因为我主要来自使用SVN和集市。 (我正在学习的git凭借着出色的GitHub的接口。)默认情况下,为什么git会在合并后提交?
似乎直觉上我,仿佛这将是
git merge [branch] --no-commit
更好的为默认,鼓励人们作出确保合并在提交之前按照他们希望的方式进行。
我很好奇这种行为,也许它只是因为我主要来自使用SVN和集市。 (我正在学习的git凭借着出色的GitHub的接口。)默认情况下,为什么git会在合并后提交?
似乎直觉上我,仿佛这将是
git merge [branch] --no-commit
更好的为默认,鼓励人们作出确保合并在提交之前按照他们希望的方式进行。
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秒只是下载所有的差异,而不是差异但它是两棵树之间的三角洲,合并本身不到半秒。
我不必考虑这个问题。
[...]这种表现实际上改变了你的工作方式。
好的,基本上假设是,如果你正在合并你想要做的事情,并且你想尽快完成它, – Will 2011-03-02 07:26:33
@ will:是的,但不要忘记其他工作流程:在合并前重新分配工作(这会导致快速合并:http://stackoverflow.com/questions/804115/git-rebase-vs - 合并/ 804178#804178) – VonC 2011-03-02 07:31:34
视频从你在这个答案中引用的谈话 http://www.youtube.com/watch?v=4XpnKHJAok8&feature=player_detailpage#t=3118s – Will 2012-06-03 07:45:07
顺便说一句,如果出现问题,git合并将最终与冲突。此外,如果由于特定的原因,你想看到合并uncommited引入的变化,你可以在成功的“git合并”后立即“git reset HEAD ^”,这将退回到一个提交,离开所有上次提交更改(这将是一个合并提交)uncommited。 – 2011-03-02 10:02:07