git - 如何使用 git diff?

  显示原文与译文双语对照的内容
59 0

我正在编写一个小测试套件,用于运行要在一组输入文件上测试的工具。 对于每个输入文件,工具( 两者都是 XML ) 正在创建相应的输出文件。 输入和输出文件在 Git repo 中被检入。

输出文件在编译工具时执行时间,所以输出文件在被测试的工具创建后被修改。

如果输出已经改变了,那么我想检查一下 node OutputFingerprint的内容是否已经更改了( 简单散列对输出文件的相关部分的内容) 。

阅读 git-diff 手册时,我发现有一个 -G 选项:

-G <正规表达式>
查找添加或者删除的行与给定的<正规表达式> 匹配的差异。

但是,它们不提供如何使用 -G 选项的示例。

我的第一个想法是


git diff -GOutputFingerprint



但那是错误的:


> git diff -GOutputFingerprint


error: invalid option: -GOutputFingerprint



接下来的想法是将 正规表达式 放在斜线中,这也不成功:


> git diff -G/OutputFingerprint/


error: invalid option: -GC:/Program Files/Git/OutputFingerprint/



此外,简单地在 -GOutputFingerprint 之间放置空格也不适用:


> git diff -G OutputFingerprint


fatal: ambiguous argument 'OutputFingerprint': unknown revision or path not in the working tree.


Use '--' to separate paths from revisions



调用 git diff 时,没有任何参数,我将得到修改:


- <OutputFingerprint>e45807ca76fc5bb78e9e928c6fb7eed6</OutputFingerprint>


+ <OutputFingerprint>d0846851bc9d52b37f7919def78660a2</OutputFingerprint>



另一个想法是 git diff -S".*OutputFingerprint.*" --pickaxe-regex 但这也不成功。

如果相关,git --version 给我 git version 1.7.3.1.msysgit.0

当我询问 git diff --help 时,提供的手册显示了 -G 选项。

那么,谁能给我一个例子,说明如何正确使用 git diff -G

时间: 原作者:

68 1
 
git diff -Garegex



 

在msysgit运行良好,但只在bash会话中( 在DOS会话中,它不返回任何内容)

它将显示 diff 如果 正规表达式 匹配一行添加或者从暂存的版本中删除。
添加了或者::: 未更改
在你的情况下,英镑将不会工作。

OP eckes 报告它工作正常,并添加了用于 -G 选项的 diff 手册页:

,查找与给定的正规表达式 匹配的或者的差异。
它与不同的输出 ,其中一个更改的行被打印为一个添加的行,一个被删除行。

示例:我添加了一个新行'aaa'( 没有 git add: 只需简单的编辑


$ git diff -Gaaa



diff --git a/conf/fragments/xxx_repos.conf b/conf/fragments/xxx_repos.coindex 263fa85..3475f9b 100644


--- a/conf/fragments/xxx_repos.conf


+++ b/conf/fragments/xxx_repos.conf


@@ -10,3 +10,4 @@ repo xxx-sdsfwk


 RW+ = vonc user1 user2


 RW = @xxx_users


 xxx-sdsfwk"Owner" ="for..."


+aaa



原作者:
...