如何处理在git中零影响更改的文件?

时间:2016-04-21 21:14:00

标签: git

我的存储库中有几个文件会更改每个其他提交,但这些更改实际上并没有改变任何内容。让我解释。例如,我有一个名为ethereal的文件,其中包含以下内容:

foo
bar
kappa

我进行提交,然后神秘的实体将文件更改为:

foo, bar,
kappa

项目的完全相同

神秘的实体无缘无故地改变了它们。但这是一件事:git不知道这些文件是一样的。

这就是为什么几乎每个提交都包含文件ethereal的无意义更改。

不,将其添加到.gitignore无济于事,因为ethereal 在项目存储库中。

提交杂乱成为一个真正的问题 我找到的唯一解决方案是在每次提交之前键入git update-index --assume-unchanged ethereal

但我读here你不应该经常这样做。现在假设有20个这样的文件。

必须有一个更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分:2)

  

神秘的实体无缘无故地改变了它们。但是这里有一件事:git不知道这些文件是相同的。

即使修改了单个字节,Git也会看到内容已更改 在您的情况下,文件会以某种方式更改,因此它们被标记为已修改。

您可以执行以下操作之一:

  1. .gitignore - 在你描述原因
  2. 时不会为你工作
  3. --assume-unchanged您已经在使用它。
  4. smudge / clean在这里为您提供救援
  5. <强> Smudge

    阅读所有相关内容并在此处进行设置:
    https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes

      

    事实证明,您可以编写自己的过滤器,以便在提交/结帐上的文件中进行替换。

         

    这些称为cleansmudge过滤器。

         

    .gitattributes文件中,您可以为特定路径设置过滤器,然后设置将在检出文件之前处理文件的脚本(“涂抹”,见图8-2)和之前的文件他们上演了(“干净”,见图8-3)。

         

    这些过滤器可以设置为做各种有趣的事情。

    enter image description here