Windows短名称混淆Git

时间:2018-03-12 16:50:50

标签: git configuration windows-7 centos naming

我正在使用Git,并观察以下奇怪现象:未被更改的文件显示为已重命名。例如:

rename from path/to/file/filename.txt
rename to path/to/file/FILENA~1.txt

另一个例子:

rename from another/path/file.longext
rename to another/path/FILE~2.LON

最后一个例子:

rename from folder/path/file.csv
rename to folder/PATH~2/file.csv

我只是环顾了回购邮件,得到了nerd sniped Windows和Linux之间的行为差​​异。

git repo位于NFS网络驱动器上,并安装在Linux(CentOS)VM和Windows 7 VM中。每个VM都有自己的Git安装。在Linux上,Git没有显示任何变化。在Windows 7上,Git显示了> 800次更改。大多数更改都与上面的示例类似。经过进一步调查,我发现在repo中有多个文件/文件夹具有相同的拼写但不同的情况。查看最后一个示例的Windows,我在目录folder中看到了这一点:

X:\nfs_mount\repo\folder>dir
 Volume in drive X is name
 Volume Serial Number is XXXX-XXXX

 Directory of X:\nfs_mount\repo\folder

xx/xx/xxxx xx:xx AM    <DIR>          .
xx/xx/xxxx xx:xx AM    <DIR>          ..
xx/xx/xxxx xx:xx AM    <DIR>          PATH
xx/xx/xxxx xx:xx AM    <DIR>          PATH~1

这就是我在Linux的同一位置看到的内容:

fqdn.domain.com:/some/location/repo/folder$ ls -l
total xx
drwxr-xr-x 3 username compname 4096 XXX xx xx:xx path/
drwxr-xr-x 3 username compname 4096 XXX xx xx:xx PATH/

我的问题是名称具有相同拼写但不同外壳的文件夹。鉴于这是一个庞大的回购,这个问题在不同的地方有超过400个表现形式,我不能(不允许)改变所有这些位置,有没有办法让我在Windows上让Git意识到这些不是& #39;实际上有变化吗?我知道在Linux上重命名一切都可以解决这个问题,但我无法使用该解决方案。

我正在寻找可以更改的git配置设置或Windows设置。更改必须是我可以应用于我的本地repo / VMs的东西,不会影响远程仓库或以任何方式更改仓库。 Windows 7上的git版本是git version 2.13.2.windows.1,使用Git Extensions安装。

1 个答案:

答案 0 :(得分:0)

这是一个不寻常的情况:它被检查到Linux区分大小写的文件系统,然后以一种奇怪的方式实时映射到Windows文件系统。我不确定你是否可以在远程结账处做多少工作。由于它与Linux共享索引文件这一事实使得它更加复杂,因此使用Windows感知太过分可能会破坏在Linux端访问存储库。

你可以做的是在本地克隆它,然后git应该能够处理不同情况的目录:

this

-s标志可以让你避免复制所有的git数据。然后,您可以使用数据,或编辑,提交和推回。最好通过Linux工具修改工作树文件。

PS:只支持Windows,我支持检查这些存储库:

git clone -s REMOTE_LOCATION LOCAL_LOCATION

使用单个&#34; dir&#34;正确检查子目录,git状态没有变化