2013-06-05 127 views
2

的克隆遠程分支可用性所以我是很新,Git的。我在本地使用了一段時間,但從未用於分佈式團隊協作的預期目的。Git的方法:在克隆

背景: 最近我公司開發外推開始爲我自己和我的公司其他員工誰一直在小的改動我們的網站開始commiting其回購。他們使用git流程工作流程。

計劃過程: 我公司是流程相當大,並且控制,所以我們在我們的IT部門一個人誰將會充當一種「守門人」如果你願意的。他克隆了我們的開發人員回購協議副本到我們的網絡,員工#2,然後我從門衛的克隆中克隆出來。員工#2和我永遠不會直接進入開發人員的回購。我檢查了守門員的克隆,他擁有我們開發人員回購的所有跟蹤分支。我的克隆人沒有任何跟蹤分支。要獲得跟蹤分支機構,他必須結帳所有我們需要的分支機構,然後讓我和員工#2做一個提取?並且將我們的分支機構納入他們(開門人)分行的可能存在問題。

這裏的規劃過程的一個小ASCII圖:

Developer repo 
     | 
     | 
Company "Gate keeper" 
     /\ 
    / \ 
    / \ 
    me  employee #2 

好像如果我沒有合適的開發分支創建特性分支的它會搞砸。

很抱歉,這是這麼長時間,感謝您的幫助!

TL;博士從克隆的克隆工作沒有所有的原始的遠程跟蹤分支,我怎麼讓他們和哪些潛在的問題?

回答

0

你和#2網守作爲遠程回購,並從中獲取。當你這樣做,你只會得到的地方分支機構的狀態,在目前各自的承諾。

所以,需要git pull相關分支機構起牀從開發回購日期更改。然後你可以從關守獲得最新的變化。

對我來說這似乎很不方便,因爲它取決於定期拉動關守,以便您可以拉動。此外,什麼是應該做的,如果有他不喜歡改變? git revert呢?

,可能爲更好的對您工作的替代,將是Integration-Manager Workflow關守可能是集成管理器,而你,#2開發者可能是貢獻者。

什麼是最好的取決於的角色很多。他是負責代碼的,還是開發人員負責?

+0

開發人員是100%負責代碼。事實上,現在,當我們正在學習這些繩索時,開發人員希望我們在他們選擇的git託管平臺上使用合併請求。守門人只是爲了有一些控制。網守甚至不會正式對我們的代碼擁有否決權,他只是在那裏推銷開發者。 – IamPATRICKc

0

我會說一般情況下,這是不好的做法,除非守門人和你們兩個是唯一在存儲庫上工作的開發人員。 Git的強項之一是保留本地功能分支,通過合併主分支(git流情況下的開發分支)的最新更改,您可以輕鬆地保持最新狀態。

想象一下,你有一個功能分支,有很長的開發時間,比如2周。如果開發分支經常被其他開發人員推送,並且網守不會經常更新他的存儲庫,那麼在嘗試合併時,會遇到很多令人頭痛的衝突。如果你幸運的話,當他試圖將它合併到主要的存儲庫時,會成爲門衛頭疼的事情。

您的主資料庫在哪裏託管?如果它是託管在例如Bitbucket或Github上,更好的方法是讓您可以讀取存儲庫的存取權限,以便您可以分叉它。然後,您可以分派存儲庫,將其提交給您自己的副本,然後將請求提交給主存儲庫。通過這種方式,您可以使叉子保持最新(以及您的本地工作區),同時守門人和其他人可以在將代碼合併到主存儲庫之前對代碼進行評論。

的設置是這樣的,然後

-------------------   ------------------------------- 
| Main repository |   | Your forked repository  | 
-------------------   | (Main repository as remote) | 
Gatekeeper can read/write  ------------------------------- 
You can read     You have read/write access 
           You can fetch/pull the latest changes from main 
           You can push your commits 

現在您可以輕鬆獲取/拉你的分叉庫中的最新變化,並啓動該功能分支。如果主存儲庫已更新,則可以始終獲取/拉取更改並將它們合併到功能分支中。

您的當地功能分支已完成嗎?將整個分支推送到您的分叉存儲庫,然後向主存儲庫執行拉取請求,然後可以審查併合並或拒絕該主存儲庫。

這將節省公司的時間和很多麻煩,爲您和其他參與開發的。

+0

我喜歡這種方式,不幸的是我不相信Codebase的分歧。 – IamPATRICKc

0

假設承包商的回購是類似的(裸和DMZ'd),我會考慮在每個推送到另一個後接收掛鉤。爲了防止在公司內部邊界發現推送衝突,只能由一個公司或另一個公司更新dmz'd repos中的每個分支。