2016-06-07 136 views

回答

3

有實際上2種鏡,如在the git remote documentation注意到:

當取鏡與--mirror=fetch創建,裁判將 不被存儲在參/遙控器/名稱空間,而是將遠程中的所有 refs/直接鏡像到refs/中的 本地存儲庫中。此選項僅在 存儲庫中才有意義,因爲提取會覆蓋任何本地提交。

當使用--mirror=push創建推式鏡像時,git push 將始終表現爲好像--mirror已通過。

一個取鏡(這是你會得到什麼,如果你使用git clone --mirror)通過它的兩個鍵設置爲檢測,core.bare及其fetch行:

$ git remote add --mirror=fetch rfetch ssh://upstream.host/path/to/repo.git 
$ git config --get-all remote.rfetch.fetch 
+refs/*:refs/* 
$ 

檢測推鏡更簡單:

$ git remote add --mirror=push rpush ssh://upstream.host/path/to/repo.git 
$ git config --get --bool remote.rpush.mirror 
true 

如果特定remote.remote.fetch設置爲+refs/*:refs/*但確實庫不已將core.bare設置爲true(您可以使用git config --get --bool core.baregit rev-parse --is-bare-repository發現;兩者都做同樣的事情),你有一個困惑的存儲庫(例如我所做的以上說明:-))。如果有多個remote.remote部分,並且它們中的任何一個都有fetch=+refs/*:refs/*,那麼您有一個最好的存儲庫(理論上,具有多個遙控器的提取鏡像可以用作聯合存儲庫,但所有遙控器都需要使用不同的參考文獻,例如,只有一個可能有一個master分支)。您可以使用git config --get-regexpgit config --list找到所有遙控器,並提取與正則表達式^remote\.匹配的項目。這裏awk實際上也許如果編寫腳本的最合適的處理器:在獲得遙控器的列表

$ git config --list | awk -F. '$1 == "remote" { if (!r[$2]++) print $2 }' 
rfetch 
rpush 
$ 

,那麼你就可以探測每一個用於其鏡面的煩躁或者作爲提取或推鏡。如果有的話是取鏡子,core.bare應該是true

-1

Git使用對等體系結構。作爲鏡像的git存儲庫將出現,並且就像它的源代碼一樣。爲了區分它們,你可以查看'.git/config'文件,因爲配置文件沒有被壓入,但是它不會明確指出它是一個鏡像。

1

嘗試:

git config --list | grep remote 

remote.origin.url=<git remote url> 
remote.origin.fetch=+refs/*:refs/* 
remote.origin.mirror=true 

我不明白上面列出的細微之處,但爲我工作。

相關問題