4

如何在遥控器refs/notes的输出中显示?git log --oneline --graph --all --decorate

使用上面的命令,我只看到我自己的refs/notes/foobar,但看不到远程参考。

文档没有暗示我可能为此使用的任何命令。

4

3 回答 3

1

更新- 由于评论显示这显然不清楚,我已经强调了我回答问题的地方。


像大多数 git 命令一样,git log在本地 repo 上运行。 要查看遥控器上的笔记,您需要获取它们。

您可以通过说手动执行此操作

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

您还可以将其添加到远程的 fetch refspec 中,以便它自动发生。

于 2018-04-27T15:49:26.807 回答
0

也许这更像是对 OP 在评论中所说的话的回答:

我想知道远程存储库对我的笔记有什么状态。

并且它没有解决在git log's 的输出中合并任何内容作为引用的原始问题:

...在git log --oneline --graph --all --decorate输出中...

但是其他讨论都没有提到ls-remote,我发现这有助于诊断 Notes fetch/merge/push 过程中的问题。

例如,当 Notes 似乎没有正确获取/合并/推送时,我要求用户运行以下命令,显示通常要保持同步的所有 3 件事:

  • 第一个命令显示遥控器有什么。
  • 第二个命令显示您的远程跟踪参考。(我在这里没有看到任何关于跟踪 refs 的参考,但我们发现它有助于让多人在 Notes 上工作。)
  • 第三个命令显示您的本地参考。
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

如其他答案中所述,您仍然看不到遥控器上注释的实际值(blob 内容),因为它们必须被获取,但使用ls-remote意味着您至少对遥控器是否已更改有所了解。

于 2020-08-03T18:53:26.183 回答
0

首先让我们解释一下git notes是什么。

git commit

如您所知,每次commit编写 git 代码时,git 都会记录文件的当前快照,提交对象将树和任何其他额外信息存储为提交元数据。然后将此元数据传递给sha1sum我们并获得提交 id <SHA-1>

在此处输入图像描述

如果稍后,我们尝试修改提交git commit --amend,sha-1 将被更新,如下所示。内容还是一样,只是SHA-1内容不同。

在此处输入图像描述


git notes

如上所述,为commit影响 SHA-1 所做的任何修改,这就是 git 注释来拯救的地方。

git notes允许我们在不影响提交的 SHA-1 的情况下添加要提交的内容,这意味着我们可以在不修改 SHA-1 的情况下将内容附加到提交。

在此处输入图像描述

如您所见, git notes 不是提交内容的一部分,并且像任何其他提交内容一样存储在.git文件夹下(本地下refs/notes/)。

为了从服务器获取注释,您必须像获取任何其他 git 内容一样获取它们。

如何取笔记?

为了获取注释,请使用以下 fetch 命令和以下 refspec:

# 手动获取笔记
git fetch origin refs/notes/*:refs/notes/*

# 添加配置以在每次执行简单提取时自动提取注释。
# 这将导致每次获取遥控器时都获取笔记。
git config --add remote.origin.fetch +refs/notes/*:refs/notes/*
于 2018-04-27T17:08:18.870 回答