我遇到的情况是我尝试使用以下方法获取远程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
中的文件并再次尝试抓取,我会下拉该文件/参考。
为什么我不拉下另一个/refs/notes/git-ratchet-1-test2
?
答案 0 :(得分:1)
关键在于:
如果我手动删除.git / refs / notes / git-ratchet-1-test中的文件并再次尝试抓取...
您手动提供refspec refs/notes/*:refs/notes/*
。这是一种非力量的&#34; refspec,意思是:&#34;如果我已经有一个参考,不要更新我的,请保留我现有的参考资料。
要将此更新为强制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 =
行。