告诉git不要在行级别对完全更改的文件进行区分

时间:2011-11-23 03:07:54

标签: git diff commit

我有一个坐在git中的示例HTML文件。最近它需要完全改变,因此没有太多关注新旧之间的差异。

目前差异将显示为++ - + - + - + --- ++,我希望它只显示-------- ++++++。

有没有办法告诉git这个文件更改是一个完整的更改,用户不需要知道行差异,而是整体改变?

P.S。答案显示了diff命令的方式,但是如果我可以在commit命令中为特定文件永久指定它,那将会很棒。

1 个答案:

答案 0 :(得分:3)

git中的每次提交都会为文件存储一个全新的blob,即使更改是文本文件中的单个字符更改(稍后可能只包含delta等)

你通常不应该担心git存储的方式和内容(以及磁盘空间便宜)

更新

如果您只是担心在重写文件时看到的差异,可以在diff中使用-B选项:

  

-B [<n>][/<m>]
  --break-重写[=[<n>][/<m>]]

     

将完全重写更改分为删除和创建对。这个   有两个目的:

     

它会影响相当于文件总重写的更改方式   不像一系列的删除和插入混合在一起非常   几条线恰好在文本上与上下文匹配,但作为一个   单个删除所有旧的,然后单个插入   一切都是新的,数字m控制-B选项的这个方面   (默认为60%)。 -B / 70%指定不到原始的30%   应该保留在git的结果中,将其视为完全重写   (即,否则产生的补丁将是一系列删除和   插入与上下文行混合在一起)。

     

与-M一起使用时,完全重写的文件也被视为   重命名的来源(通常-M只考虑一个消失的文件   作为重命名的来源),数字n控制着这一方面   -B选项(默认为50%)。 -B20%指定更改   添加和删​​除相比文件大小的20%或更多   有资格被选为重命名的可能来源   另一个文件。

有更复杂的方法,比如使用filter-branch等来删除(和修改)历史记录,但在这种情况下我不会推荐这些。