# 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/***
4条答案
按热度按时间zd287kbt1#
**和大多数git命令一样,
git log
在本地仓库上运行。**要查看远程仓库上的笔记,需要获取它们。您可以手动执行此操作,方法是
您还可以将其添加到远程的fetch refspec中,以便自动执行。
xvw2m8pv2#
也许这更像是对OP在评论中所说的话的回答:
我想知道我的笔记在远程存储库中的状态。
而且它并没有像最初提到的问题那样在
git log
的输出中包含任何内容:...在
git log --oneline --graph --all --decorate
输出中...但是其他的讨论都没有提到
ls-remote
,我发现它对诊断Notes获取/合并/推送过程中的问题很有帮助。例如,我要求用户在Notes没有正确抓取/合并/推送时运行以下命令,显示所有3件通常旨在保持同步的事情:
您仍然无法看到远程Notes的实际值(blob内容),正如在其他答案中提到的那样,因为它们必须被获取,但是使用
ls-remote
意味着您至少对远程Notes是否已更改有一些了解。p1iqtdky3#
首先,让我们解释一下**
git notes
**是什么。git commit
正如你所知道的,每次你
commit
编码到git,git记录了文件的当前快照,提交对象将树和任何其他额外的信息存储为提交元数据。然后将此元数据传递给sha1sum
,我们获得提交id<SHA-1>
。如果稍后,我们尝试修改提交
git commit --amend
,sha-1将被更新,如下所示。内容仍然相同,但SHA-1
不同。git notes
如上所述,对
commit
的任何修改都会影响SHA-1,这就是git notes来拯救的地方。git notes
允许我们在不影响提交的SHA-1的情况下向提交添加内容,这意味着我们可以在不修改SHA-1的情况下将内容附加到提交。正如你所看到的,git notes并不是提交内容的一部分,和其他提交内容一样,它存储在
.git
文件夹下(本地在refs/notes/
下)。为了从服务器获取笔记,你必须像获取其他git内容一样获取它们。
如何取笔记?
要获取注解,请使用以下fetch命令和以下refspec:
i5desfxk4#
在这个上下文中(git-log(1)),“Remote”最典型的意思是远程引用,即
refs/remotes/*
。换句话说:查看您在本地获取的属于
origin
远程的main
分支的日志。但那些只适用于分支,而不是其他参考,如笔记。因此,没有开箱即用的解决方案。
你唯一能做的就是伪造你自己的远程命名空间并使用它: