我正在使用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安装。
答案 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状态没有变化