从...开始
git status
# On branch master
nothing to commit, working directory clean
然后切换到另一个分支
git checkout somebranch
切换到新分支并运行git status
git 后,有时会抱怨随机更改的文件。如果我用它来区分文件,git diff
它将首先显示整个文件,所有行都被删除,然后再次添加
- someline
- someotherline
+ someline
+ someotherline
然后运行 agit diff --ignore-space-at-eol .
将不会显示任何文件已更改,这使我相信 git repo 中的某处存在行尾问题,因为如果我使用我选择的合并工具(Beyond Compare)对文件进行二进制比较,它会告诉我文件是二进制相同,即使 git 抱怨它们不同,地狱我什至做了一个十六进制比较,它们确实是相同的,那么为什么 git 认为它们改变了?
该存储库位于旧 svn 存储库上,该存储库按照 github 指南https://help.github.com/articles/importing-from-subversion进行转换,之后我们将 .gitattributes 文件添加到解决方案中,如下所示:
# .gitattributes
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
添加 .gitattributes 文件后,我们还按照 githubs 指南从https://help.github.com/articles/dealing-with-line-endings修复行尾
团队中的每个人都在 windows 上运行,团队中的每个人都在使用 core.autocrlf=true 并且每个人都在使用至少
git --version
git version 1.8.3.msysgit.0
这里有什么问题?git 抱怨的文件是完全随机的,它发生在团队中的每个人身上。此外,使用 git checkout file-that-hasnt-really-changed 也无法恢复它抱怨的文件。