我很好奇這種行爲,也許它只是因爲我主要來自使用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