我的存储库中有几个文件会更改每个其他提交,但这些更改实际上并没有改变任何内容。让我解释。例如,我有一个名为ethereal
的文件,其中包含以下内容:
foo
bar
kappa
我进行提交,然后神秘的实体将文件更改为:
foo, bar,
kappa
项目的完全相同。
神秘的实体无缘无故地改变了它们。但这是一件事:git不知道这些文件是一样的。
这就是为什么几乎每个提交都包含文件ethereal
的无意义更改。
不,将其添加到.gitignore
无济于事,因为ethereal
已在项目存储库中。
提交杂乱成为一个真正的问题
我找到的唯一解决方案是在每次提交之前键入git update-index --assume-unchanged ethereal
。
但我读here你不应该经常这样做。现在假设有20个这样的文件。
必须有一个更好的方法来解决这个问题。
答案 0 :(得分:2)
神秘的实体无缘无故地改变了它们。但是这里有一件事:git不知道这些文件是相同的。
即使修改了单个字节,Git也会看到内容已更改 在您的情况下,文件会以某种方式更改,因此它们被标记为已修改。
您可以执行以下操作之一:
.gitignore
- 在你描述原因--assume-unchanged
您已经在使用它。smudge / clean
在这里为您提供救援Smudge
强> 阅读所有相关内容并在此处进行设置:
https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes
事实证明,您可以编写自己的过滤器,以便在提交/结帐上的文件中进行替换。
这些称为
clean
和smudge
过滤器。在
.gitattributes
文件中,您可以为特定路径设置过滤器,然后设置将在检出文件之前处理文件的脚本(“涂抹”,见图8-2)和之前的文件他们上演了(“干净”,见图8-3)。这些过滤器可以设置为做各种有趣的事情。