2012-01-31 54 views
2

myrepo/.git/refs/remotes中有空文件夾。他們的目的是什麼?.git文件夾中空「遠程」文件夾的用途是什麼?

他們似乎映射到過去使用過的遠程名稱。如果是這樣,刪除它們會有什麼影響?

如果我不刪除它們,將添加一個具有相同名稱的遠程文件夾作爲其中一個文件夾會有什麼影響?會導致任何問題嗎?

回答

1

ProGit on "Git Internals"提到:

如果添加了遙控器和推到它的Git存儲值你最後一次推到遙遠的每個分支在裁判/遙控器目錄。

例如,您可以添加遠程叫origin,推動您的master分支到它:

$ git remote add origin [email protected]:schacon/simplegit-progit.git 
$ git push origin master 
Counting objects: 11, done. 
Compressing objects: 100% (5/5), done. 
Writing objects: 100% (7/7), 716 bytes, done. 
Total 7 (delta 2), reused 4 (delta 1) 
To [email protected]:schacon/simplegit-progit.git 
    a11bef0..ca82a6d master -> master 

然後,你可以看到什麼origin遙控器上的master分支是最後一次您與服務器通信,通過檢查refs/remotes/origin/master文件:

$ cat .git/refs/remotes/origin/master 
ca82a6dff817ec66f44342007202690a93763949 

遠程引用不同於分支(refs/heads引用)主要是因爲它們不能被檢出
Git將它們作爲書籤移動到這些分支在這些服務器上的最後已知狀態

我不建議加在什麼混帳數據庫的內部結構的任何子文件夾,但是,消除它的內容應該是安全的(這隻會意味着未來git fetch將從申報的遙控器重新獲取一切)。
由於Pro-Git chapter on the refspecs提到:

在這種自動由git remote add命令寫在默認情況下,Git會獲取所有refs/heads/在服務器上的引用,並將其寫入到本地refs/remotes/origin/
因此,如果在服務器上的master分支,你可以在本地通過訪問該分支的日誌:

$ git log origin/master 
$ git log remotes/origin/master 
$ git log refs/remotes/origin/master 

它們全是等價的,他們每個人因爲Git的擴展爲參/遙控器/來源/主。

相關問題