在git diff中自定义标题

时间:2010-08-04 20:24:32

标签: git diff git-diff

使用git diff查看差异时,每次更改都以以下行开头:

@@ -28,41 +20,10 @@ namespace ConsoleApplication1

对于C,最后一部分是非常具有描述性的 - 它显示了例如发生变化的函数。但是对于C#,它只显示命名空间,这不是很有用。我认为那是因为它显示的是没有缩进的最后一行。有没有办法如何配置?

2 个答案:

答案 0 :(得分:19)

我找到了,该行称为hunk标题,the documentation说明如何自定义它:

  

定义自定义hunk-header

     

文本差异输出中的每组更改(称为“hunk”)都带有以下形式的行前缀:

@@ -k,l +n,m @@ TEXT
     

这称为hunk标头。默认情况下,“TEXT”部分是以字母,下划线或美元符号开头的行;这符合GNU diff -p输出使用的内容。但是,此默认选择不适用于某些内容,您可以使用自定义模式进行选择。

     

首先,在.gitattributes中,您将为路径分配diff属性。

*.tex   diff=tex
     

然后,您将定义一个“diff.tex.xfuncname”配置来指定一个正则表达式,该表达式与您希望显示为“Hunk”标题“TEXT”的行匹配。在$GIT_DIR/config文件(或$HOME/.gitconfig文件)中添加一个部分,如下所示:

[diff "tex"]
        xfuncname = "^(\\\\(sub)*section\\{.*)$"
     

请注意。配置文件解析器会使用单级反斜杠,因此您需要将反斜杠加倍;上面的模式选择一个以反斜杠开头的行,然后是零或多次出现的sub,然后是section,然后是open brace,到行尾。

答案 1 :(得分:4)

请参阅gitattributes manpage,“生成差异文本”部分,例如diff.csharp.xfuncname配置(搜索xfuncname)。