我正在编写一个应用程序来在Git和ClearCase存储库之间来回移动提交。
Git版本是:1.8.3.msysgit.0
代码是用Python(2.7.5)编写的,我遇到了一个奇怪的错误。命令行上的行为和应用程序中相同命令的行为是不同的:
从我的应用程序日志中,我得到了这个::
[git diff --name-status -M -z --ignore-submodules 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --] exit code: 128
Command output for [git diff --name-status -M -z --ignore-submodules 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --]:
stderr >> fatal: bad revision '4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac'
但是,在同一Windows命令行中,没有结果,但也没有错误:
C:\Temp\gitcc_test>git diff --name-status -M -z --ignore-submodules 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --
C:\Temp\gitcc_test>
在类似的说明中,如果我运行此命令行(显示差异,而不仅仅是重命名的文件),我会得到输出:
C:\Temp\gitcc_test>git diff --ignore-submodules 6a4db18a0048db2dfe0e6639cabcdf10e265a1b6..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --
diff --git a/hello.txt b/hello.txt
index 3eecb7d..da588dd 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1 @@
-Bonjour!
+Hello!
C:\Temp\gitcc_test>
但是这个命令什么都不返回:
C:\Temp\gitcc_test>git diff --ignore-submodules 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --
C:\Temp\gitcc_test>
4dc7的父提交...是6a4d ...,为什么4dc7 ... ^为什么不给我任何结果?
提前致谢!
答案 0 :(得分:0)
事实证明,不使用'..'并将插入符号放在散列的另一端就可以在命令行和Python下使用。
所以这个:
git diff --name-status -M -z --ignore-submodules 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --
成为这个:
git diff --name-status -M -z --ignore-submodules ^4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --
一切都很有效!