我在 Windows 上使用 git (1.8.3)。如果我从 github 克隆一个 repo,然后立即在该 repo 上签出一个不同的现有分支,git 会检测到修改过的文件。通常. 有时它不会。所有修改后的文件的差异都相同(包括行尾)。在我的团队中至少有 4 台不同的 PC 上的 2 个不同的存储库中观察到了这个问题。
它并不总是相同的文件,但它几乎总是代表中的几个文件子集之一。例如,有时在 repo 的根目录中有相同的 5 个文件,有时在一个特定文件夹中相同的 93 个文件,有时在不同文件夹中相同的 16 个文件。
一旦 git 将文件标记为已修改,如果我还原或存储它们,它们会立即再次标记为已修改,这使得无法在分支之间来回切换。
我感觉它与行尾有关,但我已经添加了推荐的 .gitattributes 文件并重新规范了每个分支,但我仍然有这些零星的问题。我想到的另一种可能性是分支之间的合并以某种方式弄乱了我所做的重整化,但我不知道如何测试该理论。
我们都拥有core.autocrlf=true
,因为我们都在 Windows 上。这是我们的 .gitattributes
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.sqlproj merge=union
*.html text diff=html
*.css text
*.js text
*.ejs text
*.sql text
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain