2010-05-26 100 views
122

我老實說,在這裏的語義不清楚。它們都是關於代碼+歷史單元的副本/變體,但過去我不確定我可以說。這個邏輯結構是在什麼地方解釋的?這些詞在Git中意味着什麼:Repository,fork,branch,clone,track?

+5

我會推薦閱讀Pro Git書的前幾章(http://progit.org/book/)。 – ewall 2010-05-26 21:15:41

+56

+1。很多git教程都會告訴你如何執行某些任務,而不必解釋某些單詞的含義或git如何工作。要求解決這些問題的資源是一個合理的問題。 – 2010-05-26 21:36:35

+12

希望我能+1更多的丹尼爾的評論。雖然某些術語(例如存儲庫)的含義應該是顯而易見的,但它們之間的關係並不總是(分支與分支),真正的含義很容易被習慣於集中式VCS的人誤解。另外,請看Pro Git的「什麼是分支?」部分 - 一個基本的用戶是否真的想知道blob和樹木,還是隻想定性知道分支是什麼? – Cascabel 2010-05-27 12:27:00

回答

137

存儲庫只是存儲工作歷史的地方。它通常位於工作副本的.git子目錄中 - 您正在處理的文件的最新狀態的副本。

要分割一個項目(在特定時間點從某人的倉庫獲取源代碼,並對其應用自己的分歧更改),可以克隆遠程倉庫以創建它的副本,然後完成自己的工作您的本地存儲庫並提交更改。

在存儲庫中,您擁有分支,這些分支在您自己的存儲庫中是有效的分支。您的分支將在您的存儲庫中有一個祖先提交,並將與您的更改分開。您可以稍後合併您的分支更改。分支讓您一次處理多個不同的功能。

您還可以跟蹤遠程存儲庫中的各個分支。這允許您從其他人的分支中引入更改並將其合併到您自己的分支中。如果你和一個朋友一起工作一個新功能,這可能會很有用。

網上有很多很棒的git書籍。看看ProGitGit Magic開始,以及官方教程和社區圖書。

+0

當然閱讀F手冊和教程是最基本的。但是,在我看來,這是對整個事物的一個很好的總結。非常感激! – brasofilo 2012-06-02 11:29:41

+0

請注意,您可以將本地工作目錄切換到新分支(「git checkout 」)。在這種情況下,您本地工作目錄的文件將被您切換到的分支的內容替換。但是你不會放鬆你的工作:Git將你在Git「數據庫」(隱藏的.git文件夾)中的前一個分支所做的所有更改(「git commit」)存儲起來,並且可以讓你切換回文件。 – KrisWebDev 2013-06-24 12:57:34

+3

我認爲需要特別提及的是,無論您使用哪種VCS,分叉和分支都被認爲是兩個單獨的事物。分支被認爲是有利的,並暗示了開發者之間的一致。分叉更加嚴重,因爲這意味着參與項目的開發人員不同意某些事情並決定分道揚some。當雙方達成協議後,成功的分支機構通常會在稍後合併爲一個項目。從那以後,Git(和GitHub)已經模糊了這些術語,這兩個術語基本上代表了相同的想法,但方式不同。 – redteam316 2014-01-27 14:39:45

12

我要用RTFM回答我自己的問題。

但是,閱讀this罰款手冊。正如作者所說:

「我從中得出的結論是,如果您瞭解Git的工作方式,那麼您只能真正使用Git。僅僅記住你應該在什麼時候運行哪些命令將在短期內運行,但在卡住或者更糟糕的是破壞某些東西之前,這只是一個時間問題。

「不幸的是,Git上的一半現有資源只採用這種方法:它們會引導您通過哪些命令運行,並期望如果您只是模仿這些命令,就應該做得很好。另一半確實貫穿了所有的概念,但是從我所看到的,他們以一種假定您已經瞭解Git如何工作的方式來解釋Git。 」

+0

此介紹似乎已轉移到http://www.sbf5.com/~cduan/technical/git/。原始網址現在仍然有效。 – 2012-06-12 15:19:53

+1

這在上下文中是正確的。如果你需要立即生產或者只是檢查代碼,那麼不要對git的工作有深入的瞭解。教程很好。這就是我進入git的方式。但是,如果您需要更高級的創建分支,分叉,重定位以及其他更高級的任務,那麼您必須知道git是如何工作的,特別是如果您的背景處於集中式源代碼管理中。 – Phil 2015-10-29 17:29:29

3

This GoogleTechTalk是一個奇妙的介紹Git學習幕後實際發生的事情,同時學習語言也。它是由Git的一個非常早的貢獻者提供的,他在2007年作爲向Git引入的一種方式發表了這個演講。如果你看這個演講,你不僅會知道每個單詞是什麼,例如存儲庫,分支,分支等,但是你也會知道幕後發生的每一件事情是什麼時候發生的,合併等。

地址很長,但信息量很大。它還將Git與其他版本控制系統進行了對比,以便您瞭解爲什麼Git的創建方式以及它與其他控制系統相比的優勢。儘管談話很舊,但啓動和運行非常有幫助。在我跳入手冊之前,我會看這個。我相信事情會變得更有意義。