0

我们如何Notes added by 'git notes add'排除git log

当我们运行git log --all时,有数百万行带有Notes added by 'git notes add'. 我们需要 --all 来查看其他所有内容。我们只是不想要添加注释的提交。但是,我们确实希望看到附加到提交的实际注释本身。

那里可能有一个重复的问题,但我已经搜索了 8 多个小时,但仍然找不到。

例如:git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset) %C(red)%N %C(reset)' --all显示以下内容(Tested注释在哪里):

  • 1b15b8e - (3 小时前)'git notes add' 添加的注释 - maker2
  • 06b1158 -(2 小时前)修复了错误 #37 - maker2Tested

我们实际上想要:

  • 06b1158 -(2 小时前)修复了错误 #37 - maker2Tested

我们不希望:

  • 1b15b8e - (3 小时前)'git notes add' 添加的注释 - maker2

使用 --no-notes 实际上会产生以下结果,这不是我们想要的输出:

  • 1b15b8e - (3 小时前)'git notes add' 添加的注释 - maker2 %N
  • 06b1158 -(2 小时前)修复了错误 #37 - maker2 %N

Git版本是1.7.1

我们目前的解决方法是使用 | grep -v 'Notes added by' | less -r,但现在输出变得奇怪,图形线由于某种原因以彩虹色显示。

4

2 回答 2

1
git log --exclude='refs/notes/*' --all ...

从文档:

   --exclude=<glob-pattern>
       Do not include refs matching <glob-pattern>
       that the next --all, --branches, --tags,
       --remotes, or --glob would otherwise consider.
       Repetitions of this option accumulate
       exclusion patterns up to the next --all,
       --branches, --tags, --remotes, or --glob
       option (other options or arguments do not
       clear accumulated patterns).

       The patterns given should not begin with
       refs/heads, refs/tags, or refs/remotes when
       applied to --branches, --tags, or --remotes,
       respectively, and they must begin with refs/
       when applied to --glob or --all. If a trailing
       /* is intended, it must be given explicitly.
于 2021-11-15T02:56:12.097 回答
0

解决方案似乎是grep去掉不需要的线条和sed不需要的颜色。基本上附加git logwith | grep -v 'Notes added by' | sed -e 's/^|/\x1b[m|/g' -e 's/^\*/\x1b[m\*/g' | less -R

完整的命令行:

git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset) %C(red)%N %C(reset)' --all | grep -v 'Notes added by' |
  sed -e 's/^|/\x1b[m|/g' -e 's/^\*/\x1b[m\*/g' | less -R

grep -v 'Notes added by'删除包含注释提交的行。

sed -e 's/^|/\x1b[m|/g' -e 's/^\*/\x1b[m\*/g'|在第一个或行中添加 ANSI 转义码的前缀*以重置颜色

less -R用颜色和正确的线宽显示输出。

于 2021-10-28T00:22:23.130 回答