2016-03-18 107 views
0

我有兩個git倉庫應該保持同步並且不能同時訪問。一個在工作,一個在家,沒有可能的網絡連接。將分支從一個副本複製到另一個回購

如何處理這個簡單的設置?

我曾嘗試:

我有「知道」兩回購的克隆和存在於便攜式硬盤。

可以說有人在「工作」創建了一個新分支,我想將其轉移到回購「主頁」。這個怎麼做?

如果我只能做一個git pull我得到我的克隆如下:

$ git branch --list --all 
*master 
origin/HEAD -> origin/master 
origin/bugfix_component_condition_destruction_fail 
origin/master 
origin/remove_stoplist_copy_and_erase 

問:這只是意味着我的本地克隆「知道」有介於上述所列分支機構並沒有實質數據在我的克隆期望爲當地現有的一個名爲「主」?

這很容易拉/推主同時回購。但是其他任何一個似乎都不存在於我的本地克隆中。我必須跟蹤每個遠程分支到我的克隆的本地一個,然後將其轉移到另一個回購?

問:是否有任何典型的方法來處理兩個回購讓他們都同步,如果兩個回購提交都將被推送?

問:有沒有一種方法可以獲得所有信息以及所有遠程分支的內容。

對我來說,回購的「克隆」意味着什麼有點神祕?它似乎不是一個真正的克隆,但只有一些元數據和主分支。這是正確的嗎?

編輯:

如果我開始gitk --all我看到這是在分支裏所做的所有更改。這看起來分支的內容在克隆中。

但是,如果我做的:

$git checkout -b remove_stoplist_copy_and_erase --track remotes/origin/remove_stoplist_copy_and_erase 
error: Not tracking: ambiguous information for ref refs/remotes/origin/remove_stoplist_copy_and_erase 
Switched to a new branch 'remove_stoplist_copy_and_erase' 

所以我做:

$git checkout origin/remove_stoplist_copy_and_erase 
$git checkout -b remove_stoplist_copy_and_erase 

,現在推: $混帳推--set上游前remove_stoplist_copy_and_erase

我害怕必須手動爲所有遙控器上的所有分支執行所有操作,以使兩者同步。這項工作有沒有一些「最佳做法」?

回答

1

你可以使用捆綁。沒有必要有充分的資源庫及可攜式硬盤

上我們稱他們爲repo1repo2

在repo1你撥打:

  • $ git fetch <bundle2> 'refs/heads/*:refs/remotes/repo2/*'從在repo2
  • 創建包文件導入改變
  • $ git bundle create <bundle1> --all --not --remotes=repo2創建一捆發送到repo2

在repo2,corresp ondingly:

  • $ git fetch <bundle1> 'refs/heads/*:refs/remotes/repo1/*'
  • $ git bundle create <bundle2> --all --not --remotes=repo1

manpage包含更多的信息和示例。

0

A1:是的,您需要在您的克隆上執行git fetch --all以獲取所有遠程分支。

A2:有幾種方法可以實現這一點,但它們都是程序性的(不是軟件工程意義上的)。

A3:參見A1。

+0

如果我在那之後做了一個'git fetch --all'處理克隆?在我的問題中看到我的編輯。你對A2的信息不是很有幫助。 「有幾種方式」不是對如何做某事的問題的回答。有一種方法可以幫助我:-)在你的答案之前有一種方法是非常明確的! – Klaus

+0

@克勞斯:我同意我的A2不是有幫助的迴應。一種方法是使用補丁程序(並道歉連接異地):https://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/ – TriskalJM

+0

'你不確定你的意思是由_deal與clone_?克隆現在應該包含原始倉庫所擁有的所有信息,因此除了必須推送您在克隆中所做的更改之外,您將它視爲與遠程倉庫相同。 – TriskalJM

相關問題