2015-10-08 59 views
1

取出時,我有一種情況,我嘗試使用獲取遠程的git筆記以下:缺少裁判/筆記混帳

git fetch origin refs/notes/*:refs/notes/* 

在倉庫的一個全新的副本,這正常工作。它拉低2注命名空間:

> git fetch origin refs/notes/"*":refs/notes/"*"                             <system> <dev> 
From ssh://url/android-client 
* [new ref]   refs/notes/git-ratchet-1-3.2 -> refs/notes/git-ratchet-1-test 
* [new ref]   refs/notes/git-ratchet-1-dev -> refs/notes/git-ratchet-1-test2 

然而,在我當前的項目資源庫,當我這樣做取,我只得到裁判之一。如果我手動刪除文件.git/refs/notes/git-ratchet-1-test並嘗試再次提取,我拉下該文件/ ref。

爲什麼我不下拉其他/refs/notes/git-ratchet-1-test2

回答

1

的關鍵,這是在這裏:

如果我手動刪除的.git /參/筆記/ git的棘輪-1測試文件,然後再試一次取...

您正在手動提供參考文獻,refs/notes/*:refs/notes/*。這是一個「非強制」refspec,意思是:「如果我已經有一個裁判,不更新我的,保留我現有的裁判」。

爲了使這是一個更新強制refspec,在前面添加一個+

,如果您總是像債券獲取(強制與否),更新git config該遠程到的Refspec添加到fetch集。例如,而不是:

[remote "origin"] 
    url = git://git.kernel.org/pub/scm/git/git.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 

您可能會使這個讀:

[remote "origin"] 
    url = git://git.kernel.org/pub/scm/git/git.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    fetch = +refs/notes/*:refs/notes/* 

(你可能有多達fetch =行,只要你喜歡,每個遠程)。

+0

這個邏輯很有意義,儘管我在做一個'git fetch origin + refs/notes/*:refs/notes/*'後仍然沒有看到丟失的筆記。我錯過了一步嗎? – loeschg

+0

不要以爲你錯過了任何東西,只要你確保你的shell不用吃'*'(如果需要的話,以某種方式引用它們)。 – torek