2012-09-10 196 views
8

這個問題是不一樣的git - how to mirror file from other repoHow do I update my bare repo?如何更改用--bare克隆的git存儲庫以匹配使用--mirror克隆的git存儲庫?

由於與--mirror克隆一個倉庫是一個純倉庫,我可以與--bare克隆的倉庫就像一個與--mirror克隆?可以通過簡單地修改配置文件來完成嗎?

如果不是,還有其他方法可以將裸倉庫轉換爲鏡像存儲庫嗎?

另一個問題,爲什麼我不能在鏡像庫中使用git push --all,而這個命令可以在裸露的repo中運行?

+2

你可以平凡編輯在任何文本編輯器配置文件。只需使分支引用它們在鏡像倉庫中的方式(+ refs/*:refs/*),移除遠程跟蹤分支(從packed-refs和refs/remote/*/*),添加'mirror = true' ,並重新運行'git fetch'。 – fork0

+0

@ fork0這個微不足道的操作似乎不起作用... – thinke365

+0

究竟是什麼不行?錯誤訊息? (順便說一下,我沒有提到要添加'mirror = true'的部分,它是'[core]')。 – fork0

回答

2

如果您使用git clone --mirror克隆您的回購,那麼在default matching push policy之後的git push --all將推送所有本地分支到遠程回購。

但是如果你的遠程回購已添加到你的本地倉庫作爲遠程引用(即當地的回購已經從克隆另一個遠程回購),那麼git push --all secondRemoteRepo不會找到許多匹配分支推到,除非你先拿到那些分支。
所以這應該工作:

git fetch secondRemoteRepo 
git push --all secondRemoteRepo 
8

要更改與git clone --bare克隆到一個存儲庫匹配這將是一個git clone --mirror什麼,做到以下幾點:

$ git config remote.origin.fetch "+refs/*:refs/*" 
$ git config remote.origin.mirror true 

然後做一個git fetch一切應該是最新的。

0

如今:

git remote add --mirror=fetch origin <url> 

然後

git fetch