首页 > 解决方案 > TortoiseGit 显示修改后的文件,这些文件是二进制相同的(未修改),但不会出现在 git status 中

问题描述

我正在使用 Visual Studio Code Remote SSH 在 Linux VM 上开发的文件夹上通过 samba 共享使用 Tortoise。

我在 Linux VM 上将所有文件标准化为 NL,并添加了一个 .gitattributes 文件:

* text=auto

*.c text eol=lf
*.h text eol=lf

我在虚拟机上使用 git 命令行提交并推送了所有更改的文件,而我在 Linux 虚拟机上的 git 状态为空。

现在在我的 Windows PC 上尝试使用 Tortoise 提交时,我得到了一堆修改过的文件,这些文件没有任何修改。

我尝试在 Tortoise Git 设置中摆弄本地AutoCrLf文件,但文件仍然显示。这基本上将.git/config设置 autocrlf从 false 更改为 true,反之亦然。

但是这两种设置都不会使文件在提交时从 Tortoise Git 中消失。这些文件根本无法更改,因为它们是相同的文件,只需从 Windows PC 上的共享访问它们以使用并与 Tortoise 一起使用它们。

当然,提交文件而不进行更改会破坏 repo。我尝试删除文件并使用 git checkout 将它们取回,但同样的情况发生了。

如何让 Tortoise 像 git status 一样工作?

编辑:我在 Windows 上尝试过git status,与 Linux 不同,它也显示文件已修改。git for windows 和 git for linux 有区别吗?

标签: gittortoisegit

解决方案


我发现这不是 Tortoise 的问题,而是 Git for windows 的问题。

切换到 false 的设置在本地 git 配置中:

[core]
filemode = false

这是因为在 linux 上修改的文件权限/用户/组被正确处理,但是在 samba 共享上,Git 看到由于 samba ACL 而发生了一些变化,但它不知道是什么。


推荐阅读