2010-12-08 96 views
0

我有一個非常緩慢的網絡鏈接到我的遠程存儲庫(稱爲repoSlow),我從中獲取一段時間到我的主要開發回購(稱之爲repo1)。git從第二學位遠程獲取

有時我會將repo1克隆到另一個目錄中的repo2以進行測試,例如,在其他分支上沒有丟失repo1的狀態(也涉及到對象文件和庫,因此一個簡單的存儲不會這樣做)。

爲了將repoSlow的狀態轉換爲repo2,我通常需要將repo1,checkout和merge分支(我感興趣)從repoSlow複製到repo1,然後將它們提取到repo2。

除了它是一個繁瑣的過程和其他一些事實,我有時不想合併到repo1中。檢出一個不同的本地分支名稱會導致一個大的命名混亂。

是否有一種簡單而直接的方式實際上獲取遙控器的遙控器?

我想一個更好的工作流程可能是將repoSlow克隆到裸機(或甚至是鏡像的)本地回購,並多次克隆該回購,但爲了更好地理解git,我保留原始問題。

回答

0

你說得對,最好將克隆到本地的裸回購作爲你的整合點,然後克隆你的repo1和repo2。

但是要回答你原來的問題,我不相信有一種方法可以直接獲取遙控器的遙控器;但是您可以從repo1中克隆repo2後,將repoSlow添加爲repo2中的遠程設備。如果你這樣做,它只需要從repoSlow中獲取它從repo1中克隆的東西,這應該比填充整個歷史記錄要快得多。

要做到這一點,只需運行從repo2內的下列:

git remote add upstream git://example.com/path/to/repo/slow.git 
git remote update 

現在你應該有repo2 2個遙控器; origin指的是repo1,和upstream(或任何你想稱之爲)指向你的repoSlow。

0

可以在repo2進行配置是這樣的:

[remote "origin"] 
     fetch = +refs/heads/*:refs/remotes/origin/* 
     fetch = +refs/remotes/origin/*:refs/remotes/ancestor/* 

這告訴repo2不僅取repo1的分支機構(和反映他們爲origin/*),而且還獲取repo1的起源的跟蹤分支(和鏡子他們爲ancestor/*

所以現在你只需要在repo1中做一個「git fetch」就可以從repoSlow中獲取更改,而不需要改變任何本地分支,然後你就可以將這些更改提取到repo2中。