【问题标题】:Why does git commit after a merge by default?为什么git默认在合并后提交?
【发布时间】:2011-03-02 07:05:56
【问题描述】:

我对这种行为很好奇,也许这只是因为我主要来自使用 SVN 和 bazaar。 (我正在学习 git 与优秀的 github 交互。)

这对我来说似乎违反直觉,好像它会更好

git merge [branch] --no-commit

默认鼓励人们在提交之前确保合并按照他们想要的方式进行。

【问题讨论】:

  • 顺便说一句,如果出现问题,git merge 会以冲突告终。此外,如果由于特定原因您希望看到未提交的合并引入的更改,您可以在成功的“git merge”之后立即执行“git reset HEAD^”,这将退回到一个提交,留下所有最后一次提交更改(这将是合并提交)未提交。

标签: git merge


【解决方案1】:

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

因此,默认情况下“--no-commit”几乎会破坏该目的。

使用--no-commit 执行合并,但假装合并失败且不自动提交,让用户有机会在提交前检查并进一步调整合并结果。

Linus's talk (video)中提取:

唯一重要的是你能多快合并
在 git 中,您可以合并...我每天合并 22,000 个文件几次,如果合并时间超过 5 秒,我会感到不高兴,而所有这 5 秒只是下载所有差异,不是差异,而是它的两棵树之间的增量,合并本身不到半秒。
而且我不必考虑它。
[...]这种表现实际上会改变您的工作方式。

【讨论】:

猜你喜欢
  • 2011-12-07
  • 2012-01-24
  • 2015-06-11
  • 2019-06-10
  • 2017-12-15
  • 2016-04-26
  • 1970-01-01
  • 2023-02-11
相关资源
最近更新 更多