git - 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 有区别吗?
解决方案
我发现这不是 Tortoise 的问题,而是 Git for windows 的问题。
切换到 false 的设置在本地 git 配置中:
[core]
filemode = false
这是因为在 linux 上修改的文件权限/用户/组被正确处理,但是在 samba 共享上,Git 看到由于 samba ACL 而发生了一些变化,但它不知道是什么。
推荐阅读
- django - 如何使用特定的电子邮件地址 Django 注册用户?
- simulation - 导出 Anylogic 实验的结果
- python - exec 和 eval 如何将 __builtins__ 添加到给定的环境中?
- c - 使用 if 语句和条件将模式转换为代码
- html - 我的 CSS 动画不工作,而其他一切都是
- android - 我无法更新数据,每次都重新添加产品,我要更新
- javascript - 复制文件时出错:“ENOTSUP:socket 上不支持操作,copyfile”
- javascript - 在 v-for 中使用 v-if
- javascript - 在 react-slick 中重新处理阻塞资源
- python - 使用 PM2 在后台运行 django 应用程序