为什么一些git提交隐藏在cygwin shell中?

exh*_*uma 5 git cygwin msysgit

我的一位同事最近注意到正常git log命令与以下别名之间存在差异:

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
Run Code Online (Sandbox Code Playgroud)

经过一番挖掘后,我们发现它可能与cygwin bash有关.

以下是我们的发现:

  • git log --graph

    所有提交都可见

  • git log --oneline

    一些承诺失踪......好吧!让我们通过将输出重定向到文本文件来准备错误报告:

  • git log --oneline > test.txt

    唉,所有提交都在test.txt?!?让我们通过拆分别名来进一步调查.删除颜色代码:

  • git log --graph --pretty=format:'%h - %d %s (%cr) <%an>'

    一些提交缺失.所以它必须是变量之一......

[...后来有些frobnications ...]

  • git log --graph --pretty=format:'%h - %d %s (%cr)'

    所有提交都可见

  • git log --graph --pretty=format:'%h - %d %s <%an>'

    所有提交都可见

在某些变量组合之后似乎会破裂.在这种情况下(%cr) <%an>

我也在linux上尝试了相同的存储库,在那里,它按预期工作(即所有提交都显示在日志中).

我们想知道为什么会这样.

Mic*_*ade 1

尝试以下方法来更接近原因:

  • 将 cygwin 与不同的终端一起使用,例如 xterm 或 mintty。
  • 设置(或取消设置?)$PAGER并查看它如何影响错误。
  • 如果$PAGERless,则从内部保存日志less( S),和/或-R打开/关闭 ANSI 转义处理(如果打开了颜色)。
  • 如果您有颜色,请尝试使用 --no-color
  • 检查您的区域设置$LC_ALL等。$LANG尝试

LANG=C git logETC