爲什麼git命令切換名爲git checkout
的分支?
它真的有意義嗎?爲什麼git命令切換名爲「git checkout」的分支?
我將其命名爲git switch
。此外,git checkout
還有其他含義:例如恢復文件(如svn revert
)
爲什麼git命令切換名爲git checkout
的分支?
它真的有意義嗎?爲什麼git命令切換名爲「git checkout」的分支?
我將其命名爲git switch
。此外,git checkout
還有其他含義:例如恢復文件(如svn revert
)
因爲該命令可以用來執行兩個動作,所以它使得使用「checkout」關鍵字有意義。
兩個動作:
您還可以使用 - 你當參數「」想要從分支名稱中區分出一個提交ID
這是個好名字,因爲當檢出一個分支時,您要求存儲庫給你(就像「檢出」來自圖書館的書籍),其最新修訂版本中的所有適當文件均指明該分支爲您的工作副本。
git checkout
這裏沒有「其他含義」的問題。該命令爲您提供一個單獨的文件或一組文件(請參閱:「分支」),其編號爲修訂狀態X。不管你認爲「回覆」還是缺少git checkout
的靈活性和一般性。在這兩種情況下,它都是從存儲庫中檢出某些狀態量並將其設置爲工作副本,隨時可以進行編輯。
我的問題與「結帳」一詞是暗示你有義務稍後登記。就像圖書館的比喻 - 你借了一本書,然後再把它拿回來。或者其他的源代碼控制軟件,其中檢出具有相同的含義 - 擁有臨時(可能是獨佔)訪問文件的權限,當您稍後退出時應該放棄該文件。 – 2014-07-22 18:29:51
checkout
是指更新工作樹中的文件。 還原還意味着將工作樹中的文件更新爲之前的提交。 所以在我看來,有一個命令更新或使用git checkout
更加現實。
我看到大多數其他答案正在解釋什麼git checkout
做什麼,以及爲什麼「結賬」可能是一個合理的方式來形容。不過,雖然我喜歡的git高昂的代價,這也觸及當我試圖幫助人們瞭解系統中出現挫折的兩個嚴重點:
git checkout
做兩個非常不同的事情,這將是如果他們是單獨的命令,對新人很有幫助。
憤世嫉俗的人可能會認爲git的術語是故意選擇混淆來自CVS和Subversion的人!你提到的那個(checkout
)就是一個很好的例子。另一個是commit
,這完全是git中的本地特性,完全依賴於CVS/SVN中的服務器 - 「record」的darcs術語對於新入門的人來說需要更少的un-learning。另一個例子我喜歡的是消息「需要更新」,你在Git中看到,這實際上意味着"needs to be committed" :)
當然,一個總是可以使用了不同的前端與git,如easy git,iolaus,等等但大多數人最終都必須學習標準命令,所以你只需要習慣其中一些被命名的令人驚訝的東西。
我敢肯定有在git的這些各種命令的名稱歷史原因,但它是有幫助的,如果不同的話已被選定...
更新:VonC鏈接在an answer with a neat alias to make git checkout
safer的兩個用法中的任何一個的評論;)
+1000:100%同意。更多關於結賬危險:http://stackoverflow.com/questions/2961240/get-back-the-changes-after-accidental-checkout/2961348#2961348 – VonC 2011-03-09 11:52:41
@VonC:謝謝 - 我喜歡檢查點的成語! – 2011-03-09 12:35:54
@VonC:關於這個話題,我想你可能對我的一篇新博客感興趣[混淆git術語](http://longair.net/blog/2012/05/07/the-most-confusing- git-terminology /)增加了幾個例子。 – 2012-05-07 10:08:56
因爲Linus認爲它必須是這樣嗎? – eckes 2011-03-09 11:04:34