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

时间:2012-02-10 10:56:58

标签: 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
经过一番挖掘,我们发现它可能与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上尝试了相同的存储库,在那里,它按预期工作(即所有提交都显示在日志中)。

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

1 个答案:

答案 0 :(得分:1)

尝试这些以更接近原因:

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

LANG=C git log