2016-09-19 40 views
1

今天在涉及git回購的工作中,我得到了一個非常奇怪的場景。這個想法是有兩個倉庫有以下約束是否可以溝通兩個本地git-repos?

本地RepoA

  1. 有我所有的源代碼,也就是說,ShareOk.cppShareNok.cpp
  2. 推向http://remote-RepoA.git

local-RepoB

  1. 應該只從RepoA這是細跟其他人分享,在這種情況下,只有ShareOk.cpp
  2. 推動改變遠程前有這些文件,需要做一些代碼清理
  3. 推向http://remote-RepoB.git

有沒有辦法將某些文件從local-RepoA「推」到local-RepoB做代碼清理,然後將更改推送到remote-RepoB

這對我沒有任何意義,但我被要求檢查一下連接兩個本地回購站的方法。

編輯

從下面提供的答案,我想我的描述未完全,所以我將進一步擴大它

有兩個研究與開發組。

甲組具有僅在repoA其上游設置爲http://repoA.git所有的源代碼和工作。所有的源代碼可能都是混亂的,並且沒有經過測試的代碼。

甲組想給B組repoA是已知工作完美無缺,用清潔和測試碼的代碼達到一定點/提交。所以組A希望有一種方法可以將repoB與上游http://repoB.git此代碼保留與組B共享文件的更改歷史記錄。

終於B組只是克隆/從http://repoB.git拉,並檢查代碼編譯和運行,然後他們做了一些其他的東西與它。

+1

我相信你在這裏需要的是多個遙控器的配置,並明確指定要將更改推送到的遙控器。更多信息:https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes –

+0

也許你可以使用硬/軟鏈接解決它? – pedrorijo91

回答

1

我懷疑將提交/文件從一個倉庫推到另一個倉庫真的是你想要的。從提供的上下文中我不能確定這是否適用,但通常我會建議讓Repo B成爲您的上游(主要)回購並在其上公開工作,就像您對待要共享的任何包或模塊一樣。

在RepoA中,您可以將RepoB設置爲依賴項,並通過擴展RepoB來應用任何定製或修改,而僅在RepoA中提交覆蓋。

這也可以防止你'審查'你想公開推送的文件或提交。

+0

感謝您的想法。我想在我的問題中有些問題不清楚。所以我會編輯它,但我相信你的建議或多或少是我可能需要的。當你說「在repoA中設置repoB爲依賴項」時,我該怎麼做? – BRabbit27

+0

這對您選擇的編碼語言以及您可能使用的任何框架都非常具體。我建議您針對您的特定語言對包管理/依賴關係管理進行一些研究。 Ruby有寶石,NodeJS有NPM,PHP有Composer等等......如果你仍然陷入困境,爲你的情況回答這個具體問題只是一個SO貼吧:)。 – Rick

1

A組想要給B組代碼提供一定的點/ repoA提交,這個代碼已經完美地運行,並且代碼乾淨且經過了測試。所以A組希望有一種方式來投入repoB與上游http://repoB.git這段代碼保存爲文件變化的歷史是與B組

這聽起來像repoB應該是repoA的裸露克隆共享。那麼你只需要管理從B中抽取B的過程。

假設某個發佈分支或標籤指示A中的提交內容是「已知良好」B點應遵循的內容,則只需運行git pull KnownGoodPoint:master repoB目錄。

這也假定B組中沒有人推回repoB,所以你應該禁止這樣做。

+0

我在這個過程中有點迷茫,因爲我之前從未使用過裸克隆。你能用命令開發更多的過程嗎? – BRabbit27

+0

我做了一個'git clone --bare http // repoA.git',它創建了一個'C:\ repoA.git'目錄。假設我換成了'C:\ repoB',我想從repoA中拉出一個「已知的好」點,做一些代碼清理,最後再推送到'http:// repoB.git','git拉着名好人:主人'進場了? – BRabbit27

+0

你爲什麼創建一箇中間回購?您可以直接從服務器上的A克隆B.然後,在服務器上的該目錄中,可以從A管理更新B. – Useless

相關問題