【问题标题】:Why are some git commits hidden inside the cygwin shell?为什么某些 git 提交隐藏在 cygwin shell 中?
【发布时间】:2012-02-10 10:56:57
【问题描述】:

我的一位同事最近注意到正常的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 &gt; test.txt

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

  • git log --graph --pretty=format:'%h - %d %s (%cr) &lt;%an&gt;'

    一些提交丢失。所以它一定是变量之一……

[... 后面的一些乱七八糟的...]

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

    所有提交可见

  • git log --graph --pretty=format:'%h - %d %s &lt;%an&gt;'

    所有提交可见

它似乎在变量的某些组合之后中断。在这种情况下(%cr) &lt;%an&gt;

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

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

【问题讨论】:

  • 您是否尝试在别名定义中避免使用“&gt;”和“&lt;”,以查看该命令在您的 Cygwin 会话中是否运行得更好?
  • 删除尖括号并没有解决问题。不过奇怪的是,现在日志中出现了一个额外的提交。但它们还不是全部。
  • 作为另一个数据点,您可能想从 cmd.exe 提示符和 MinGW/MSYS bash shell 中尝试 msysgit 以缩小问题范围。顺便说一句,不要使用 Cygwin 的 msysgit -- 使用 Cygwin 的 git。

标签: git cygwin msysgit


【解决方案1】:

尝试这些以更接近原因:

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

LANG=C git log

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2021-07-17
    • 2020-10-08
    相关资源
    最近更新 更多