![](/img/trans.png)
[英]How to keep a backup git repository in sync with a local one, “git push --mirror” or “git remote update”
[英]How to mirror one one git remote to another with push
問題很簡單。 我已經使用git cvsimport將cvs repo導入到本地git存儲庫中的遠程分支中。 然后,我希望將此存儲庫:branches,tags和all同步到雲中的git存儲庫(github / gitorious)。 要做到這一點,我無法訪問rsync或直接復制存儲庫,我必須使用git push。
如何鏡像我的本地存儲庫以便其他人可以訪問完整的_cvsimport_d歷史記錄?
具體來說:
我使用cvsimport導入和跟蹤存儲庫:
git cvsimport -i -v -C cdt-make-core -d :pserver:anonymous@dev.eclipse.org:/cvsroot/tools -r cvs org.eclipse.cdt/all/org.eclipse.cdt.make.core
以上導入org.eclipse.cdt.make.core進入git repo cdt-make-core中的遠程cvs 。
然后我可以將主CVS分支的HEAD推送到github:
git push github cvs/master:refs/heads/cvs/HEAD
(我明確指定了遠程路徑,所以如果它不存在則創建它。)
有沒有辦法同步所有分支:遙控器上的cvs / * => cvs / *?
有沒有辦法同步所有標簽?
我認為你正在尋找--mirror
選項來推送:
git push --mirror github
這將推送所有引用(分支和標記),包括非快進更新。 我用它來創建本地存儲庫的備份。
手冊頁描述如下:
而不是將每個引用命名為push,指定將
$GIT_DIR/refs/
(包括但不限於refs/heads/
,refs/remotes/
和refs/tags/
)下的所有refs/tags/
鏡像到遠程存儲庫。 新創建的本地引用將被推送到遠程端,本地更新的引用將在遠程端強制更新,並且已刪除的引用將從遠程端刪除。 如果設置了remote.<remote>.mirror
配置選項,則這是缺省值。
[OT:我在日常工作中使用CDT,我喜歡它!]
我的發現是,如果您使用下面的第二個合理解決方案,您需要首先執行--mirror ,因為它會清除您嘗試推送的那些cv / branches。 所以完整的公式是:
git push --mirror -v github
git push --force github cvs/master:refs/heads/cvs/HEAD
for x in `git branch -r | grep '^..cvs/[a-zA-Z0-9_-]*$' | sed -e 's/^..//'` ; do
git push -v github $x:refs/heads/$x
git config branch.$x.remote github
git config branch.$x.merge refs/heads/$x
done
經過實驗,我不相信對我想做的事情有任何內置的支持。
然而,似乎有兩個合理的解決方案:
我最初想要將cvsimport d分支與namespacing分開。 但是,對於第一個選項,保持cvsimport存儲庫完全獨立(並且僅從中克隆)是有意義的。 然后,我可以繼續跟蹤CVS,而不會有跟蹤git repo弄臟的風險。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.