如何在遥控器的refs/notes
输出中显示git log --oneline --graph --all --decorate
?
使用上面的命令我只看到我自己的refs/notes/foobar
,但不是远程参考。
文档没有提示我可以使用的任何命令。
答案 0 :(得分:1)
更新 - 由于评论显示这显然不清楚,我已经突出显示了我回答问题的位置。
与大多数git命令一样,git log
在本地仓库上运行。
要查看遥控器上的音符,您需要提取它们。
您可以通过说
手动执行此操作git fetch origin refs/notes/*:refs/notes/*
你也可以将它添加到遥控器的fetch refspec中,以便它自动发生。
答案 1 :(得分:0)
首先,要解释什么是 git notes
。
git commit
正如您所知,每次commit
编码git时,git都会记录文件的当前快照,而提交对象会将树和任何其他额外信息存储为提交元数据。然后将此元数据传递给sha1sum
,我们将获得提交ID。
如果稍后,我们将尝试修改提交git commit --amend
sha-1将更新,如下所示。内容相同,但SAH-1不同。
git notes
如上所述,对commit
所做的任何修改都会影响SHA-1,这就是git笔记拯救的地方。
git notes
允许我们在不影响提交的SHA-1的情况下添加要提交的内容,这意味着我们可以将内容附加到提交,同时保持SHA-1不被修改。
正如您所看到的,git notes不是提交内容的一部分,并且像任何其他提交内容一样存储在.git
文件夹下(本地在refs/notes/
下)。
为了从服务器获取笔记,您必须像任何其他git内容一样获取它们。
要获取笔记,请使用以下fetch命令和以下refspec:
# manually fetch the notes
git fetch origin refs/notes/*:refs/notes/*
# add configuration to auto-fetch the notes every time you execute a simple
# fetch. This will result in fetching the notes every time you fetch the remote.
git config --add remote.origin.fetch +refs/notes/*:refs/notes/*
答案 2 :(得分:0)
也许这更是对OP在评论中所说的话的答案:
我想知道我的笔记的远程存储库处于什么状态。
它并没有解决将git log
的输出中包含的任何内容作为所引用的原始问题:
...在
git log --oneline --graph --all --decorate
输出中...
但是其他所有讨论都没有提到ls-remote
,我发现它有助于诊断Notes提取/合并/推送过程中的问题。
例如我要求用户在Notes似乎无法正确获取/合并/推送时运行以下命令,以显示通常要保持同步的所有3件事:
MINGW64 ~/git/repo (master)
$ git ls-remote origin refs/notes/* && git for-each-ref refs/notes/origin/* && git for-each-ref refs/notes/*
b8a71bdc018808e3890800a452d3ac87a0f83261 refs/notes/releaseRollback
e15b2bdc0183f791fcaf1da3b80e5125f58bae9a refs/notes/sourceCommits
b8a71bdc018808e3890800a452d3ac87a0f83261 commit refs/notes/origin/releaseRollback
e15b2bdc0183f791fcaf1da3b80e5125f58bae9a commit refs/notes/origin/sourceCommits
b8a71bdc018808e3890800a452d3ac87a0f83261 commit refs/notes/releaseRollback
e15b2bdc0183f791fcaf1da3b80e5125f58bae9a commit refs/notes/sourceCommits
如其他答案中所述,您仍然看不到遥控器上Notes的实际值(blob内容),因为必须将其提取,但是使用ls-remote
意味着您至少拥有一些遥控器是否已更改的想法。