TortoiseGit 显示二进制相同(未修改)的已修改文件,这些文件未显示在 git 状态
TortoiseGit shows modified files which are binary identical (unmodified) which do not show up in git status
我在 Linux VM 上使用 Visual Studio Code Remote SSH 开发的文件夹上通过 samba 共享使用 Tortoise。
我在 Linux VM 上将所有文件规范化为 NL,并添加了一个 .git 属性文件:
* text=auto
*.c text eol=lf
*.h text eol=lf
我在 VM 上使用 git 命令行提交并推送了所有更改的文件,而我在 Linux VM 上的 git 状态为空。
现在在我的 Windows PC 上尝试使用 Tortoise 提交时,我得到了一堆修改过的文件,这些文件没有任何修改。
我尝试在 Tortoise Git 设置中修改本地 AutoCrLf
,但文件仍然显示。
这基本上将 .git/config
设置 autocrlf
从 false 更改为 true,反之亦然。
但是这两种设置都不会使文件在提交时从 Tortoise Git 中消失。
这些文件根本无法更改,因为它们是相同的文件,只需从 Windows PC 上的共享访问它们以使用并与 Tortoise 一起使用。
当然,提交文件而不更改会破坏回购协议。
我尝试删除文件并使用 git checkout 找回它们,但同样的事情发生了。
如何让 Tortoise 像 git 状态一样工作?
编辑:
我在 windows 上尝试了 git status
,但与 Linux 不同,它也显示了已修改的文件。
windows 的 git 和 linux 的 git 之间有区别吗?
我发现这不是 Tortoise 的问题,而是 Git for windows 的问题。
切换为 false 的设置在本地 git 配置中:
[core]
filemode = false
这是因为在 linux 上修改的文件 permissions/user/group 得到了正确处理,但是在 samba 共享上 windows Git 看到某些东西因为 samba 而改变了ACL,但不知道是什么。
我在 Linux VM 上使用 Visual Studio Code Remote SSH 开发的文件夹上通过 samba 共享使用 Tortoise。
我在 Linux VM 上将所有文件规范化为 NL,并添加了一个 .git 属性文件:
* text=auto
*.c text eol=lf
*.h text eol=lf
我在 VM 上使用 git 命令行提交并推送了所有更改的文件,而我在 Linux VM 上的 git 状态为空。
现在在我的 Windows PC 上尝试使用 Tortoise 提交时,我得到了一堆修改过的文件,这些文件没有任何修改。
我尝试在 Tortoise Git 设置中修改本地 AutoCrLf
,但文件仍然显示。
这基本上将 .git/config
设置 autocrlf
从 false 更改为 true,反之亦然。
但是这两种设置都不会使文件在提交时从 Tortoise Git 中消失。 这些文件根本无法更改,因为它们是相同的文件,只需从 Windows PC 上的共享访问它们以使用并与 Tortoise 一起使用。
当然,提交文件而不更改会破坏回购协议。 我尝试删除文件并使用 git checkout 找回它们,但同样的事情发生了。
如何让 Tortoise 像 git 状态一样工作?
编辑:
我在 windows 上尝试了 git status
,但与 Linux 不同,它也显示了已修改的文件。
windows 的 git 和 linux 的 git 之间有区别吗?
我发现这不是 Tortoise 的问题,而是 Git for windows 的问题。
切换为 false 的设置在本地 git 配置中:
[core]
filemode = false
这是因为在 linux 上修改的文件 permissions/user/group 得到了正确处理,但是在 samba 共享上 windows Git 看到某些东西因为 samba 而改变了ACL,但不知道是什么。