2012-01-29 47 views
0

我有兩臺運行git的服務器,其中一臺主要實例已安裝,另一臺在雲端。我想讓他們平等。我在本地計算機上執行的每次推送都應該到達兩臺服務器,或者主服務器與雲同步。我該怎麼做?有沒有簡單的方法?是否應該在我的本地機器或主服務器上完成?如何將git推送到兩臺服務器(鏡像)

回答

3

您可以將多個URL添加到單個遠程。什麼,你需要做的是,在本地機器上,首先創建一個遠程對應gitorious服務器:

git remote add -m master remotename ssh://gitorious-server/path 

你必須重新添加gitorious服務器的URL作爲一個明確的推網址:

git remote set-url --add --push remotename ssh://gitorious-server/path 

,然後做同樣的雲服務器:

​​

這應該建立在那裏每次執行git push本地,您昌配置es將被推送到兩個服務器。但是,當您運行git pull(或git fetch)時,它只會從有爭議的服務器中獲取。如果服務器要保持同步,這應該是所需要的。

如果您只從這臺特定的本地計算機推送到任一臺服務器,那麼這就是您所需要的。但是,如果您從任何其他計算機上推送到其中一臺或另一臺服務器,則需要在每臺其他計算機上執行相同的配置。如果有足夠的計算機使其變得笨重,或者其他人可以對兩個存儲庫進行寫入訪問,並且您不完全相信他們能夠正確配置配置,那麼您最好在服務器端做一些事情。這將是後接收鉤方法manojlds mentioned。要清楚的是,如果您使用post-receive方法,不需要使用我的文章前面部分中描述的雙URL遠程方法。

1

理想的方法是在godious repo上設置post-receive鉤子,這會推動您的雲端回購。

+0

嗨,你有沒有鉤子的例子? – dextervip 2012-01-29 00:20:19

0

最簡單的方法是寫一個bash功能,在您的~/.profile~/.bashrc~/.bash_profile(假設的Unix),例如應用它:

function gitpushall { 
    git push -u origin master 
    git push -u foo master 
} 

然後運行source .profile到適用於您的登錄和運行gitpushall

相關問題