克隆时获取 git 个笔记

Fetch git notes when cloning

我知道 git 笔记可以在克隆后使用:

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

甚至在 git 配置中设置为始终获取。

但是在克隆时我没有得到注释,所以我必须克隆然后获取。尽管我确实看到在克隆时使用 --mirror 也确实得到了注释。然而,我的最佳设置是我可以在不做镜像的情况下克隆任何存储库(因为它意味着 --bare 并且还会得到其他不需要的引用)并且也得到注释。

是否有任何方法可以设置例如 git 配置以在克隆时获取特定的附加引用?

简短的回答是“否”:在克隆时,您可以选择使用默认 refspec 进行克隆(+refs/heads/*:refs/remotes/$remote/*,其中 $remote 替换为 origin 或远程名称 select) 或使用 --mirror fetch-mirror refspec (+refs/*:refs/*)。正如您所注意到的,--mirror 意味着 --bare,在这里可能并不理想。

编写一个执行克隆的 shell 脚本很容易,然后执行 git config --add remote.origin.fetch "+refs/notes/*:refs/notes/*",然后 运行s git fetch,因此您不需要运行三个命令自己动手。 (是否要 + 这里 and/or 将他们的笔记重命名为其他参考名称,由您决定。对于 FreeBSD 存储库,我使用 fetch = +refs/notes/*:refs/notes/origin/* 并设置 notesRef = refs/notes/origin/commits,我从别处复制的做法,没有考虑太多——到目前为止,我没有理由重新考虑或改变它。)