熟悉git的人可以幫助我理解回購和分支之間的區別。我最近被介紹給git,並且有點難以理解它們。我被告知將一個遠程回購(例如foo)克隆到我的本地盒子。然後創建一個本地分支。在分支上工作(更新/創建/刪除文件)並添加/提交/推送到遠程服務器(例如bitbucket)。第二組眼睛檢查分支後,說好。然後它被合併到開發或主分支。git中的repository和branch有什麼區別?
那麼存儲庫在這張圖片中扮演什麼角色?對我來說,我運行的所有操作都是針對分支的...
熟悉git的人可以幫助我理解回購和分支之間的區別。我最近被介紹給git,並且有點難以理解它們。我被告知將一個遠程回購(例如foo)克隆到我的本地盒子。然後創建一個本地分支。在分支上工作(更新/創建/刪除文件)並添加/提交/推送到遠程服務器(例如bitbucket)。第二組眼睛檢查分支後,說好。然後它被合併到開發或主分支。git中的repository和branch有什麼區別?
那麼存儲庫在這張圖片中扮演什麼角色?對我來說,我運行的所有操作都是針對分支的...
A 存儲庫是您在計算機上克隆的整個項目(目錄和文件)。 A 分支是您的存儲庫的版本。
存儲庫包含多個分支(=存在多個版本的存儲庫,並行開發了多個功能)。畢竟,對代碼進行版本控制的目的是可以同時處理項目的多個方面 - 每個方案都在不同的分支中發展。 Git在「分支」旁邊使用表達式「working tree」(表示工作臺)。充滿意象,不是嗎?
相關:如果你想知道differences between local and remote branches。
關於你處理分支的方式:
克隆遠程回購(例如FOO)到我的本地框。然後創建一個本地分支。在分支上工作(更新/創建/刪除文件),並添加/提交/推送到遠程服務器
這是一個很好,乾淨的方式來使用git。我建議你總是這樣進行:
----A---B---C-- (REMOTE, master)
|
| (Pull to local : `git pull origin master`)
v
----A---B---C-- (LOCAL, master)
然後從本地主機(git checkout -b branch1
)創建一個分支,它的工作,提交更改,並推送到遠程:
----A---B---C------ (REMOTE, master)
----A---B---C---D-- (REMOTE, branch1)
^
|
| (Push to remote : `git push origin branch1`)
----A---B---C------ (LOCAL, master)
\
D---- (LOCAL, branch1)
然後,當對你的功能/修復/無論什麼感到滿意,你可以合併branch1
到master
。
存儲庫包含有關項目的所有信息,包括所有更改的歷史記錄。每個更改都以「提交」的形式輸入到存儲庫中。
爲了顯示分支機構和存儲庫之間的差異,我將描述您提到的過程,並指出正在使用的分支機構和存儲庫的方式。這不是一個git教程,只是一個例子,所以我們可以談論分支和回購。
通常存在一個遠程存儲庫,用戶可以獲取其副本並向其提交更改。沒有實際的開發工作直接在遠程倉庫中完成。
用戶通過克隆它來獲取遠程存儲庫的第一個副本。這將在用戶機器上創建一個本地存儲庫。本地回購是遠程回購的完整副本。
分支只是指向存儲庫中某個提交的指針。 在最簡單的情況下,有一個名爲「master」的默認分支,master指向最近的提交。 每個提交都由一個數字標識,這是當時回購的哈希。例如,在這種情況下,master可能指向提交:
2d2cd6cf6f634e88ad19fa454fdcd2e1c26009c7
開發人員可以克隆遠程回購和結賬分支主控。 然後創建並簽出開發分支(例如featureX-dev)。
git checkout -b featureX-Dev
此時,兩個分支(master和featureX-Dev)指向相同的提交。 更改您的文件。 將更改提交到分支featureX-dev的本地副本。 現在,在您的本地資源庫中,分支featureX-Dev指向比master更新的提交。 將分支featueX-dev推送到遠程回購,以便它可以被審查。
git push -u origin featureX-dev
-u用於第一次將分支推送到遠程,告訴git你想跟蹤這個分支。
其他開發人員(已經克隆了遠程回購)可以通過執行拉動從遠程存儲庫獲取分支featureX-dev。
當他們檢查並告訴你沒關係的話,你可以將分支featureX-dev和你的本地副本中的主副本合併,並推送主副本。
但是等等!如果其他開發人員已將其更改推送到遠程主服務器,該怎麼辦?
在當地的回購您結賬主
git checkout master
然後拉主從遠程
git pull origin master
你必須自己最後一次提交的新變化,別人做,和碩士點。 現在,如果沒有人已經改變了,您可以合併您的Dev分支到主
git merge featureX-dev
的本地副本高手有沒有做過傷害。合併只會將您的提交添加到主分支。 解決衝突(如果有),然後將主機推回到遠程。
Randy Leberknight,感謝您花時間回覆我。您的詳細回覆肯定會鞏固對我學習過程的理解。祝福有一天! – DaeYoung
回購包含多個分支 - 正如你所說,你*添加*分支 –
不是我downvote。您可以將回購看作是遠程分支機構居住的地方。本地分支是您完成所有工作的地方,本地分支與遠程分支同步。 –