gpt4 book ai didi

git - Git 处理 CRLF(回车、换行)的策略是什么?

转载 作者:IT王子 更新时间:2023-10-29 01:09:24 24 4
gpt4 key购买 nike

我尝试提交带有 CRLF 结尾行的文件,但失败了。

我在 Windows 计算机上花了一整天的时间尝试不同的策略,几乎被吸引而停止尝试使用 Git,而是尝试 Mercurial .

如何正确处理 CRLF 行尾?

最佳答案

问这个问题将近四年后,我终于找到了一个让我完全满意的答案!

请参阅 github:help 的指南中的详细信息 Dealing with line endings .

Git allows you to set the line ending properties for a repo directly using the text attribute in the .gitattributes file. This file is committed into the repo and overrides the core.autocrlf setting, allowing you to ensure consistent behaviour for all users regardless of their git settings.

因此

The advantage of this is that your end of line configuration now travels with your repository and you don't need to worry about whether or not collaborators have the proper global settings.

这是一个 .gitattributes 文件的例子

# 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

有个方便的collection of ready to use .gitattributes files对于最流行的编程语言。它有助于您入门。

一旦您创建或调整了您的 .gitattributes,您应该执行一劳永逸的 line endings re-normalization .

请注意 GitHub Desktop在应用程序中打开项目的 Git 存储库后,应用程序可以建议并创建一个 .gitattributes 文件。要尝试这样做,请单击齿轮图标(在右上角)> 存储库设置 ... > 行尾和属性。系统会要求您添加推荐的 .gitattributes,如果您同意,该应用还将对您存储库中的所有文件执行规范化。

最后,Mind the End of Your Line文章提供更多背景知识并解释 Git 的发展历程在手头的事情上。我认为这必读

您的团队中可能有一些用户使用 EGit 或 JGit(Eclipse 和 TeamCity 等工具使用它们)来提交他们的更改。那么你就不走运了,正如@gatinueta 在这个答案的评论中解释的那样:

This setting will not satisfy you completely if you have people working with Egit or JGit in your team, since those tools will just ignore .gitattributes and happily check in CRLF files https://bugs.eclipse.org/bugs/show_bug.cgi?id=342372

一个技巧可能是让他们在另一个客户端提交更改,比如 SourceTree .我们的团队当时在许多用例中更喜欢该工具而不是 Eclipse 的 EGit。

谁说软件简单? :-/

关于git - Git 处理 CRLF(回车、换行)的策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/170961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com