2013-10-08 64 views

回答

0

首先你不應該過分擔心git備份。 - 每個在你的項目中工作的人都會在他的盒子裏有一個完整的克隆。 - 因此備份綽綽有餘。 ;)

但是你想在每次推送後更新另一個官方存儲庫。在這種情況下,最簡單的方法可能是編寫一個小型的服務器端鉤子,它在每次推送後運行,並將更改推送到第二個存儲庫。

您可能想要使用post-receive鉤子。詳情請看herehere

實施例:

#create repositories 
git init a 
git init --bare b 
git init --bare c 

#add the hook in "b" 
echo -e '#!/usr/bin/bash\nread old new ref\ngit push ../c $ref' >>b/hooks/post-receive 
chmod +x b/hooks/post-receive 

#create a commit in "a" 
cd a 
echo foo >test 
git add . 
git commit -m testcommit 

#push it to "b" 
git push ../b master 
#notice the "remote:..." output of the hook 

#find the commit in "c" 
cd ../c 
git log 

這創建三個庫。當您在a中提交併將其推送到b時,掛鉤也會將其推送到c

+0

您是否看到過有關如何做到這一點的示例? – JMSAZ2013

+0

已添加示例。這應該更清楚。 – michas

+0

你能告訴我如何推送到差異主機? – JMSAZ2013

0

另一種方式來生成備份是問你的後收到鉤create a bundle(有點像this question

!/bin/sh 

git bundle create "/path/to/backup/$(basename "$PWD").bundle" --branches --tags 

這是基於這樣的事實,在裸露的回購掛鉤會:詳見「how to get project path in hook script post-commit? 」。

束的興趣和git bundle是隻產生一個文件,哪一個更容易管理/份左右。
而這個事實就像一個(主要是隻讀的)repo,意味着你可以從該文件克隆。
這會工作:

git clone myrepo.bundle myrepo 

參見:

+0

所以這不是我正在尋找 – JMSAZ2013

相關問題