如何使Git不改变特定文件的换行符?

83

由于微软的Visual Studio中存在一个“特性”,所以.sln文件必须具有Windows风格的换行符,以便Windows资源管理器可以在Visual Studio中打开它们。因此,我需要能够提交此特定文件并保留其换行符。如果所有其他文件都被转换也没关系。问题是如何使Git仅接受具有Windows换行符的单个文件?

2个回答

122

参考gitatttributes文档。最近版本的Git允许你为文件设置eol属性,以控制文件在检出时使用的行尾符。

你可以创建一个类似下面这样的.gitattributes文件:

path/to/my/file eol=crlf

你能否更新一下这个链接:https://git-scm.com/docs/gitattributes -- 谢谢。 - natersoz
更新了!更多的文字以让stackoverflow满意。 - larsks
注意:您可能需要手动更改行尾并重新提交文件。 - Ben Winding
3
不需要重新提交任何文件。您也可以删除本地文件,然后使用 git checkout . 恢复删除。这应该会恢复所需行结尾的文件。 - Jeroen van Montfort

2
为了确保:
  • 所有的 .sln 文件都始终使用 CRLF 行尾符进行检出
  • 但是,除了二进制文件之外,git决定的其他文件都使用 LF 进行检出
...您可以在项目根目录下设置一个 .gitattributes 文件,例如:
# Ensure all files are checked into the repo with LF line endings and checked 
# out with LFs.
* text=auto eol=lf

# Except these files will always be checked out with CRLFs (regardless of the
# OS they were checked out on).
*.bat text eol=crlf
*.sln text eol=crlf

这个例子还确保了.bat文件始终使用CRLF行结尾。

注意:如果您希望在存储二进制文件(如图像)的仓库中,您可能还需要明确告诉git不要通过类似于*.png binary的方式干扰行结尾。

注意:旧版本的git在这个领域有一个bug,所以请确保您正在使用2.10或更高版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接