在问这个问题近四年后,我终于
成立一个让我完全满意的答案!
详细信息请参见github:帮助的指南处理行结尾.
Git 允许您设置行结束属性
直接使用repo文本属性在里面.gitattributes
文件。该文件被提交到
回购协议并覆盖core.autocrlf
环境,
让您确保所有人的行为一致
用户无论其 git 设置如何。
And thus
这样做的好处是你的行尾
配置现在与您的存储库一起移动,并且您
无需担心是否有合作者
具有正确的全局设置。
这是一个例子.gitattributes
file
# Auto detect text files and perform LF normalization
* text=auto
*.cs text diff=csharp
*.java text diff=java
*.html text diff=html
*.css text
*.js text
*.sql text
*.csproj text merge=union
*.sln text merge=union eol=crlf
*.docx diff=astextplain
*.DOCX diff=astextplain
# absolute paths are ok, as are globs
/**/postinst* text eol=lf
# paths that don't start with / are treated relative to the .gitattributes folder
relative/path/*.txt text eol=lf
有一个方便的准备使用的 .gitattributes 文件的集合对于最流行的编程语言。这对您入门很有用。
一旦您创建或调整了您的.gitattributes
,你应该执行一次一劳永逸的行尾重新规范化.
请注意,GitHub 桌面版应用程序可以建议并创建.gitattributes
在应用程序中打开项目的 Git 存储库后生成文件。要尝试此操作,请单击齿轮图标(位于右上角)> 存储库设置...> 行结尾和属性。系统会要求您添加推荐的.gitattributes
如果您同意,该应用程序还将对您的存储库中的所有文件执行标准化。
最后,注意你的行尾文章
提供更多背景知识并解释 Git 的演变过程
关于手头的事情。我认为这个必读.
您的团队中可能有使用 EGit 或 JGit(Eclipse 和 TeamCity 等工具使用它们)来提交更改的用户。那么你就不走运了,正如 @gatinueta 在这个答案的评论中解释的那样:
如果您的团队中有人使用 Egit 或 JGit,则此设置不会完全满足您的要求,因为这些工具只会忽略 .gitattributes 并愉快地签入 CRLF 文件https://bugs.eclipse.org/bugs/show_bug.cgi?id=342372
一个技巧可能是让他们在另一个客户端提交更改,例如源树。对于许多用例,我们的团队当时更喜欢该工具,而不是 Eclipse 的 Egit。
谁说软件很简单? :-/