Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
告诉git不要在行级别区分完全更改的文件_Git_Diff_Commit - Fatal编程技术网

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

告诉git不要在行级别区分完全更改的文件,git,diff,commit,Git,Diff,Commit,我在git中有一个示例HTML文件。最近,它需要完全改变,因此没有太多的意义来看待新旧之间的区别 目前,diff将显示为+++--++--++--++,我希望它只显示-----++++ 有没有办法告诉git这个文件更改是一个完整的更改,用户不需要知道行之间的差异,而是整个更改 另外,答案在diff命令中指明了方向,但如果我能在commit命令中为特定文件永久指定它,那就太好了。git中的每个commit都会为该文件存储一个全新的blob,即使该更改是文本文件中的单个字符更改(稍后可能只包含del

我在git中有一个示例HTML文件。最近,它需要完全改变,因此没有太多的意义来看待新旧之间的区别

目前,diff将显示为+++--++--++--++,我希望它只显示-----++++

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


另外,答案在diff命令中指明了方向,但如果我能在commit命令中为特定文件永久指定它,那就太好了。

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

您通常不应该担心git存储的方式和内容(而且磁盘空间很便宜)

更新:

如果您只是担心在重写文件时看到的差异,那么可以将-B选项用于差异:

-B[
][/
]
--中断重写
[=[][/]]

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

它会影响相当于完全重写文件的更改方式 而不是像一系列的删除和插入混合在一起的一个非常复杂的过程 很少有行与上下文的文本匹配,但作为 一次删除所有旧的内容,然后插入 一切都是新的,数字m控制着-B选项的这一方面 (默认为60%)-B/70%指定小于原始值的30% 应该保留Git的结果来考虑它是一个完全重写 (即,否则,生成的修补程序将是一系列删除和 插入与上下文行混合在一起)

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


还有更复杂的方法,如使用过滤器分支等来删除(和修改)历史记录,但我不推荐在这种情况下使用这些方法。

哦,我不知道这一点。我不知道为什么我对这件事有错误的印象。尽管如此,看到新旧之间杂乱无章的差异还是有点让人恼火。哈哈,你肯定不想知道Git是如何存储东西的。不喜欢“磁盘空间很便宜”空间本身可能很便宜,但维护/备份/处理它的成本要高得多。@AdrianCornish-就像我说的,当谈到备份/维护状态时,BLOB都被压缩了。此外,git基于磁盘空间便宜的理念,因此在性能上进行了优化。@lulalala-更新了答案,其中包含您可能想要使用的git diff选项。您正在试图挫败版本控制的目的。存储diff的目的是在两周后,当你意识到你完全没有搞错,你需要回到文件的旧版本。我的意思是,当我做一个
git diff
时,我不想看到太多的+++--++--++--++++++。我更喜欢------++++++++