同步

2

我們:同步

  1. 一些項目的遠程倉庫。
  2. 幾個遠程存儲庫,我想與前一個同步。

當在第一個項目(1)中推送某些內容時,我需要將這些更改提交給其他遠程存儲庫(2)。

我可以從第一次回購並推送到目標資源庫。

要做到這一點,最簡單的方法是什麼?

謝謝。

回答

2

您可以從無法控制的上游存儲庫克隆新的裸鏡庫,例如,搭配:

git clone --bare --mirror git://github.com/whoever/whatever.git 

(事實上,--mirror意味着--bare,所以--bare不是絕對必要的。)的--mirror選項說,而不是僅僅採取從遠程地方分支機構,使他們的遠程跟蹤分支,混帳應該使用相同的名稱鏡像遠程存儲庫中的所有分支。

然後,您可以設置一臺運行在該庫中的下列命令頻繁cron作業:

git remote update 
git push --mirror --force repo1 
git push --mirror --force repo2 

這假定您已經添加repo1repo2如遙控器,並且它們指向裸庫你只是想用作鏡子。 (後者的要求是因爲你使用的是--force,所以如果其他人將他們的工作推到repo1repo2,它將被自動鏡像推送覆蓋。)

+0

我在github存儲庫上試過這個,但是在 'git push - -mirror --force repo1' 我得到了 '致命的:refspec的遠程部分是不是一個有效的名字:能力^ {} 致命:遠程端意外掛斷' –

+0

@安德魯Kondratovich:這很奇怪,我可以'再現了這一點。您可能想要通過遍歷'git show-ref'的輸出中的每個ref來查看是否存在導致問題的特定ref,並嘗試單獨推送它,例如, 'git push refs/heads/test-branch:refs/heads/test-branch' –

+0

這似乎是問題出現在repo1中。這是新的_empty_回購,所以沒有參考。命令'git push --all --force repo1'已成功。我不知道爲什麼:)按規格 - 這些標誌非常相似。 –

1

您可以在第一個遠程存儲庫中設置一個post-receive hook,然後從第一個遠程存儲庫推送到其他每個存儲庫。

+0

我不能 - 存儲庫放置不在我的服務器,但在github或gcode上。 –

+0

那麼,GitHub至少支持某些掛鉤 - 請參閱http://help.github.com/post-receive-hooks/ – Amber

+0

但它不是我的存儲庫:) –