2012-11-14 95 views
12

我和一個來自一個大團隊的其他幾個人正在一個單獨的項目頁面上工作。我們稱它爲組頁面。當我們在組頁面上工作時,我們需要交換不完整的代碼,我們不希望將代碼發送到中央倉庫。在此期間,我們也在處理與組頁面無關的功能,我們需要提交併推送到中央服務器。我正在考慮解決這個問題,這裏是我的想法。請評論他們。如何從一個裸git回購推到另一個?

我們不能在實際的回購服務器上建立一個分支,因爲更高的上升。

  1. 創建併發送電子郵件差異,然後在我們需要返回組頁面時丟失更改並使用差異。獲取電子郵件的人應用差異。等等。
  2. 我們對我們的代碼進行了更改,提交它,但不要推它。那麼誰需要那些不完整的代碼,就可以直接從我們這裏拉。
  3. 用--bare標誌製作中央服務器的另一個克隆。所以我們可以把它作爲一個本地中央服務器,只是爲了組頁面。我們可以從中拉出併爲組頁面創建單獨的工作區。我們可以推動並拉動它。

現在每一個都有問題。

  1. 太繁瑣。我想爲它使用git。
  2. 當有人從我身上拉下來,然後開始一項新功能,然後他(推送到中央服務器),然後他從我那裏拉的任何東西都不會被推送到服務器。當我們的組頁碼完成時,他如何最終將它推送到服務器。
  3. 同樣的問題。有沒有一種方法可以將本地中央服務器推送到主服務器?兩者當然都是裸回購。有沒有辦法從一個光禿禿的克隆推向主github回購?
+0

您可以在bitbucket上製作一個免費的私人git回購,將該回購添加到您的遙控器,然後在需要時提交/推送到您的github回購主人。雖然這看起來很奇怪。你爲什麼不在你的github repo上做分支請求? –

+0

我們只是說我不允許。如果我照你的說法行事,最終我能否將變動從那個桶的回購推到我的主人手中? –

+0

你不會直接從bitbucket推送。您可以使用該回購協議與您的團隊協作。你們都會進行修改,將這些修改推送到bitbucked,把這些修改放到你的本地倉庫(你的機器),然後從你的本地倉庫推到你的github master。合理? –

回答

7

3是您的最佳選擇。事實上,這就是Git如何使用的原因;包含各個組件的存儲庫,這些存儲庫在工作完成後會進入更加中央的存儲庫。

推動別人的變化沒有問題。比方說,你做了一個改變,並將其推送到組頁面存儲庫。然後我拉動它,做一些改變,然後推回去。現在我們決定我們完成了。如果我推送到中央存儲庫,那麼推送將包括我的更改以及我的更改所基於的更改。

您不需要從一個裸回購倉庫推到另一個。 Git通過從本地回購推動到一個或多個遠程回購。克隆時,會有一個名爲「origin」的默認遠程回購站。但是,您可以根據需要配置儘可能多的遠程回購站。爲了設置這個,假設你已經從中央回購中克隆出來;這就是所謂的「起源」。現在您創建一個裸回購:它在ssh://some-machine.corp.com/path/to/groups-repo.git。在您當地的工作回購中,只需執行git remote add groups ssh://some-machine.corp.com/path/to/groups-repo.git,並且您將參考該組回購。現在您可以使用git fetch,git pull,git push等等與groups以及origin

+0

讓我再說一遍,只是爲了確保我能理解你。 有一個大師(github),我們都在從中拉出並推向。我們繼續使用這個來進行'平常'編碼。 在另一臺機器上,我們做了一個純粹的主人克隆,我們稱它爲組。然後在我們的機器上,我們從這臺機器克隆到不同的工作空間。所以現在我們有兩個不同的。對於所有與團體頁面相關的編碼,我們推動並從團體機器拉到我們團體的工作空間。當我們的工作完成時,一個人從組機器中拉出來,並按照剛剛提到的過程將它推送到github。 –

+0

@咖啡因幾乎得到它。一個竅門是你不需要克隆到不同的工作區。您可以在單個工作區中創建多個遙控器;您可以使用跟蹤「groups/master」的本地分支,以及跟蹤「origin/master」的另一個分支,並在每次使用'git checkout'時在它們之間切換。如果你願意,你可以使用多個工作空間,但有時候有一個工作空間有多個遙控器真的很方便。是的,當你完成開發時,從組織機器中取出最新代碼的人可以將其推到主回購站。 –

+0

我永遠不需要合併這些分支,對吧?作爲羣組分支,在對github remote進行最終更改後,我可以刪除這個分支。當我將拉動我的機器上的主分支時,組更改將被添加到它,因爲它們被推送到github? –

1

爲了簡單起見,Git是一個分佈式版本控制系統。這意味着,無論何時從回購中克隆,您都可以克隆整個存儲庫中的。每個克隆都是完全獨立的。實際上,你在機器上克隆的內容與服務器上的內容完全一樣,你的克隆可以接收推/拉等。(唯一的區別可能是你不會讓任何人通過ssh連接

所以,無論你走多遠,如果你的同事從你身上拉下來,他們可以將你的承諾推到主回購。同樣的事情將適用於選項3,使用你的團隊git服務器,並準備好時,你們中的一些人拉到他的機器,並從那裏推到主服務器。

因此,在你的情況下,選項3將是最簡單的。儘管一旦你推到主倉庫,這個倉庫將會給你在私人服務器上所做的所有工作。所以,我甚至不確定它有你自己的服務器是非常有用的(除非你想確保沒有人接觸你的「私人」分支)。

2

有沒有辦法從一個光禿禿的克隆推到主github回購?

是的,您不必在工作樹中推動裸露回購變更。

簡單的ssh到你的本地主'是,和運行的地方:

git push origin master 

至於對方的回答指出,你也可以直接從您的本地副本推到遠程主,但它的有時候更方便的擁有一個像這樣的自動化的「看門人」存儲庫,可以通過自動化觸發將更改(例如,審閱後)推送到多個遠程存儲庫,而無需擔心爲特定個人設置ssh密鑰等等變化了。

+0

您能否幫助評論如何從遠程主人拉到當地主人? 'git pull origin master'抱怨「此操作必須在工作樹中運行」 – SOUser

相關問題