使用git diff忽略文件中的模式

5

我在使用git diff时遇到了问题。让我先向您介绍一下背景。

我刚刚接手了一个不太受欢迎的项目。问题在于他们的scm中有两个分支。这两个分支已经很久没有合并了,但现在必须将它们合并。大多数更改都是微不足道的,因此通过git进行合并只需要大约30分钟。

然而,我的客户不相信可以自动化合并过程。因此,他们想要通过具有所有4个版本代码之间差异的差异列表来审查合并(基础版本和版本a、基础版本和版本b、a和b等)。

这也相当微不足道,但问题来了。由于这两个分支之间有很多更改,所以差异列表非常长(每个约50MB),因此这些列表是无用的。现在我的客户想要对更改进行分组。

这些“分组差异”中有4个主要组。我希望使git diff能够在某个时候忽略各个组。

g1:有很多斜杠改变了方向。因此,我希望git将/和\视为同样的符号。我已经找出如何使git忽略整行,如果它包含斜杠,但这不是我想要的,因为路径(斜杠来自何处)可能已经改变。

g2:这个问题在结构上非常类似于上面的问题,只是涉及到更多的符号。日志中有很多格式化已经发生了变化。大多数与丹麦字母有关,例如“æ”已经更改为“æ”,“ø”已经更改为“ø”等。

g3:许多注释已经更改。客户担心一些“*/”可能没有被合并。我看不出如何验证这一点。您这些专家有什么想法吗?

g4:所有未提及的更改。这被认为是真正的更改。


只有30分钟?!?对于一个微不足道的合并来说,这是一个疯狂的时间。 - knittl
我说“大部分”都是琐事。还有一些冲突需要我关注 ;) - nikolaj
1个回答

1

你可能可以编写一些代码来解析差异并删除或削减其中的一些更改。一些正则表达式技巧可能会对此有所帮助。我认为这最适用于g1和g2。

不确定如何处理g3。


我希望避免后期处理。我曾经使用过Beyond Compare,它有一个设置比较规则的选项。我当时用它来忽略日志文件中的时间戳。我希望在diff中也能做到类似的事情。我同意你关于g3的看法,除了让客户自己审核文件外,我认为没有其他办法了 :) - nikolaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接