当我在Windows上克隆存储库时,我看到Git状态中的未分级更改,而不进行任何工作树更改。 git diff
表示发生了一些更改,例如
-tablespace development
-storage(initial 10K next 10K maxextents 999);
+tablespace &tablespace
+storage(initial &initial next &next maxextents 999);
但是,如果我使用文本编辑器编辑同一文件,则不存在这些文件。
在另一个(Linux)系统上克隆相同的存储库,我没有同样的问题。这让我相信我的桌面上配置了一些钩子或其他预处理步骤。
我在$GIT_DIR/hooks
,C:\Program Files\Git\etc
或C:\Program Files\Git\mingw\etc
中找不到任何有效的挂钩。
使用--no-textconv
git diff
开关无效。
git add .
导致37个“已更改”文件中只有1个被编入索引,其余文件仍显示为未分级更改。
我的智慧结束了。有什么想法可能导致Git显示这些幻象差异?
请求的文件:
# .gitattributes
* text=auto
*.txt text
*.vcproj text eol=crlf
*.sh text eol=lf
*.shl text eol=lf
*.jpg -text
和
# .git/config
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = <repo url>
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
另请注意,git config -l
显示
...
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.required=true
filter.lfs.process=git-lfs filter-process
...
答案 0 :(得分:1)
可能存在一些名称相同但案例不同的文件,例如foo
和Foo
。典型的不区分大小写的Windows文件系统只能存储一个。 Git可能会把它与另一个混淆。
对于传统上Unix独占的项目来说,这是一个不常见的问题。 OS X用户将遇到类似的问题。
短期解决方案是创建一个小的区分大小写的文件系统。在OS X上,您可以创建区分大小写的磁盘映像。我不确定Windows。
长期解决方案是重命名冲突文件并使其项目策略不使用重叠文件。这将使该项目对Windows和OS X贡献者更友好。