【发布时间】: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 > test.txt唉,所有提交都在
test.txt中可见?!? 让我们通过分解别名来进一步调查。删除颜色代码: -
git log --graph --pretty=format:'%h - %d %s (%cr) <%an>'一些提交丢失。所以它一定是变量之一……
[... 后面的一些乱七八糟的...]
-
git log --graph --pretty=format:'%h - %d %s (%cr)'所有提交可见
-
git log --graph --pretty=format:'%h - %d %s <%an>'所有提交可见
它似乎在变量的某些组合之后中断。在这种情况下(%cr) <%an>
我还在 linux 上尝试了相同的存储库,并且在那里,它按预期工作(即所有提交都显示在日志中)。
我们想知道为什么会这样。
【问题讨论】:
-
您是否尝试在别名定义中避免使用“
>”和“<”,以查看该命令在您的 Cygwin 会话中是否运行得更好? -
删除尖括号并没有解决问题。不过奇怪的是,现在日志中出现了一个额外的提交。但它们还不是全部。
-
作为另一个数据点,您可能想从
cmd.exe提示符和 MinGW/MSYS bash shell 中尝试msysgit以缩小问题范围。顺便说一句,不要使用 Cygwin 的 msysgit -- 使用 Cygwin 的 git。