显示行的`git stash --patch`改变了`git diff` /`git status`没有显示

时间:2016-06-07 12:42:06

标签: git msysgit

当我尝试git stash save --patch时,我会收到很多在git diffgit status中看不到的补丁更改。每次更改都会删除一些行,然后重新插入相同的行,没有明显的变化,例如:

-Some text line
+Some text line
-Another line
+Another line

所有这些更改都在一段时间内未触及的资源文件中。我的平台是使用Git for Windows的Windows。

为什么git stash向我展示的内容与git diff不同,我该如何解决?

1 个答案:

答案 0 :(得分:0)

这与臭名昭着的git line endings / core.autocrlf选项和.gitattributes文件有关。即使我不明白原因,我也找到了解决问题的方法。

事实证明,某些git进程¹在我的本地存储库中创建了一个未跟踪的.gitattributes文件。这个文件中的几乎所有行都被注释掉了,除了它附近的顶部:

* text=auto

当我注释掉这一行时,就这样

#* text=auto

git stash的问题消失了,我只看到git diff看到的更改。

¹)我怀疑原因是我在同一个存储库中创建的一个新的Visual Studio C#项目 - 我猜测IDE检测到存储库并添加了文件。