【问题标题】:Problems with git diff working on command line but not in Pythongit diff 在命令行上工作但在 Python 中没有的问题
【发布时间】:2014-02-25 16:40:40
【问题描述】:

我正在编写一个应用程序以在 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...^ 不给我任何结果呢?

提前致谢!

【问题讨论】:

  • 看起来应该可以。我知道 msysgit 由于 Windows 有一些奇怪的地方(虽然我不使用 Windows,所以不确定各种损坏的位),所以我要尝试的第一件事是:当你给 git diff A..B 语法时行为与git diff A B 相同,因此也许用两个单独的参数替换A..B 部分将使msysgit 表现更好。 (但这只是在黑暗中的一个镜头。)
  • @torek 谢谢你的建议,我试过了,恐怕行为是一样的。

标签: python git python-2.7 git-diff


【解决方案1】:

事实证明,不使用 '..' 并将插入符号放在哈希的另一端在命令行和 Python 下都是一种享受。

所以这个:

git diff --name-status -M -z --ignore-submodules 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac^..4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --

变成这样:

git diff --name-status -M -z --ignore-submodules ^4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac 4dc7ad29d69ee2385802b262bfb9a4f1e28f10ac --

一切都很好!

【讨论】:

  • @lrineau 我会尽快接受,接受您自己的答案有时间限制。
猜你喜欢
  • 2016-09-09
  • 2013-06-21
  • 2023-01-12
  • 2016-09-03
  • 2015-12-12
  • 1970-01-01
  • 2015-04-21
相关资源
最近更新 更多