如何用git log显示远程refs/notes/*及远程refs/notes?
问题1:如何使用git log显示远程refs/notes/*?
默认情况下,git log只会展示本地的notes引用。要显示远程的refs/notes/*,有两种实用方式:
临时指定远程notes引用:直接在
git log命令里用--notes参数明确指定远程notes的路径。比如你的远程仓库别名是origin,要显示所有远程notes,就运行:git log --notes=refs/notes/remotes/origin/*如果知道具体的远程notes分支(比如
foobar),可以更精准地指定:git log --notes=refs/notes/remotes/origin/foobar配置默认显示所有notes:如果不想每次都手动加参数,可以设置Git全局配置,让
git log默认包含本地和远程的所有notes:git config --global log.defaultNotes refs/notes/*,refs/notes/remotes/*之后直接运行
git log,就能自动看到所有notes内容了。
问题2:执行git log --oneline --graph --all --decorate时看不到远程refs/notes,该怎么处理?
这个问题主要有两个核心原因:远程的notes引用可能没同步到本地,以及--all参数不会自动包含远程notes的路径。按以下步骤解决:
先同步远程notes到本地
默认Git fetch不会同步远程的notes引用,所以需要先配置fetch规则:git config --global fetch.refspec "+refs/notes/*:refs/notes/remotes/*"配置完成后,执行
git fetch origin,远程的refs/notes/*就会被拉取到本地的refs/notes/remotes/origin/*路径下了。让git log包含远程notes
现在你可以在原命令基础上加上--notes=refs/notes/remotes/*参数,就能看到远程notes了:git log --oneline --graph --all --decorate --notes=refs/notes/remotes/*要是想一劳永逸,直接用问题1里的
log.defaultNotes配置,这样以后不管用什么git log命令,都会自动包含远程notes。
另外,你可以用git show-ref --notes命令检查本地是否已经有远程的notes引用,确认同步是否成功。
内容的提问来源于stack exchange,提问作者musicmatze

