- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在 Stack Overflow 以及 git 文档中阅读了很多关于 core.autocrlf 设置如何工作的不同问题和答案。
这是我读到的内容的理解:
Unix 和 Mac OSX(OSX 之前使用 CR)客户端使用 LF 行尾。
Windows 客户端使用 CRLF 行结尾。
当客户端上的 core.autocrlf 设置为 true 时,git 存储库始终以 LF 行结束格式存储文件,客户端文件中的行结束在客户端(即 Windows) checkout /提交时来回转换使用非 LF 行尾,无论客户端上的行尾文件是什么格式(这与 Tim Clem 的定义不一致 - 请参阅下面的更新)。
这是一个矩阵,它试图用问号记录 core.autocrlf 的“输入”和“假”设置,其中我不确定行结束转换行为。
我的问题是:
随着共识似乎形成,我将更新答案中的问号。
core.autocrlf value true input false----------------------------------------------------------commit | convert ? ?new | to LF (convert to LF?) (no conversion?)commit | convert to ? no existing | LF (convert to LF?) conversioncheckout | convert to ? noexisting | CRLF (no conversion?) conversion
我并不是真的在寻找关于各种设置的优缺点的意见。我只是在寻找数据,这些数据可以清楚地说明如何期望 git 使用三种设置中的每一种进行操作。
--
2012 年 4 月 17 日更新:阅读后the article by Tim Clem JJD 在评论中链接,我修改了上表中“未知”值中的一些值,以及更改“checkout existing | true 以转换为 CRLF 而不是转换为客户端”。以下是他给出的定义,比我在其他地方看到的任何定义都清晰:
core.autocrlf = false
This is the default, but most people are encouraged to change thisimmediately. The result of using false is that Git doesn’t ever messwith line endings on your file. You can check in files with LF or CRLFor CR or some random mix of those three and Git does not care. Thiscan make diffs harder to read and merges more difficult. Most peopleworking in a Unix/Linux world use this value because they don’t haveCRLF problems and they don’t need Git to be doing extra work wheneverfiles are written to the object database or written out into theworking directory.
core.autocrlf = true
This means that Git will process all text files and make sure thatCRLF is replaced with LF when writing that file to the object databaseand turn all LF back into CRLF when writing out into the workingdirectory. This is the recommended setting on Windows because itensures that your repository can be used on other platforms whileretaining CRLF in your working directory.
core.autocrlf = 输入
This means that Git will process all text files and make sure thatCRLF is replaced with LF when writing that file to the objectdatabase. It will not, however, do the reverse. When you read filesback out of the object database and write them into the workingdirectory they will still have LFs to denote the end of line. Thissetting is generally used on Unix/Linux/OS X to prevent CRLFs fromgetting written into the repository. The idea being that if you pastedcode from a web browser and accidentally got CRLFs into one of yourfiles, Git would make sure they were replaced with LFs when you wroteto the object database.
Tim 的文章非常好,我唯一能想到的是他假设存储库是 LF 格式,这不一定是正确的,尤其是对于仅限 Windows 的项目。
将 Tim 的文章与投票最高的文章进行比较 answer to date by jmlane 在 true 和 input 设置上完全一致,在 false 设置上存在分歧。
最佳答案
关于 core.autocrlf
工作原理的最佳解释可以在 gitattributes 上找到。手册页,在 text
attribute section .
这就是 core.autocrlf
当前的工作方式(或者至少从我所知的 v1.7.2 开始):
core.autocrlf = true
LF
字符的文本文件在您的工作树中被规范化为 CRLF
;存储库中包含 CRLF
的文件将不会被触及LF
字符的文本文件在提交回存储库时从 CRLF
规范化为 LF
。存储库中包含 CRLF
的文件将不受影响地提交。core.autocrlf = input
CRLF
字符的文本文件在提交回存储库时被规范化为 LF
。core.autocrlf = false
core.eol
指示工作树的文本文件中的 EOL 字符。core.eol = native
默认情况下,这意味着工作树 EOL 将取决于 git 运行的位置:Windows 机器上的 CRLF
,或 LF
在 *nix 中。gitattributes
设置确定提交到存储库的 EOL 字符规范化(默认是规范化为 LF
字符)。我最近才研究这个问题,我也觉得情况很复杂。 core.eol
设置无疑有助于阐明 git 如何处理 EOL 字符。
关于git - 不同操作系统之间的行结束转换如何与 git core.autocrlf 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3206843/
我正在搜索根据特定用例使用的正确设置,但找不到任何描述相同设置的资源。因此,我问这个问题是为了解决任何正在寻找 git 的 autocrlf 选项的正确设置的人。 用例 1: 我在 Mac 上,其他开
如果用户不更改此设置,我试图弄清楚 Git 中 core.autocrlf 的默认值是多少。 我查看了文档,但找不到此信息。你能给我指出正确的方向吗? 具体来说,在全新安装 Git 时,当从 Wind
我每天都使用 Windows、Mac OS X 和 Linux。我在所有这些环境中都使用 git,从那些对行尾有不同选择的人们使用的 repos 中提取数据。 是否有针对我的情况设置 core.aut
是否可以为特定子模块配置 core.autocrlf=false?我没有子模块的推送访问权限,因此我需要从外部进行设置。 最佳答案 不要放 --global 应该就够了 git config core
我将 core.autocrlf 设置为 true。我想把它改成假。在 Git Bash 我跑了 git config --global core.autocrlf false 但 git confi
这真太了不起了。在Internet上有大量关于core.autocrlf和.gitattributes的帖子,我仍然无法弄清楚在.gitattributes中写什么来表达core.autocrlf =
我目前正在使用 Git,并且在我的 Windows PC 上一切正常。我将 autocrlf 设置为 true,根据这个是正确的 https://help.github.com/articles/de
我在部署到 Windows、Linux 和 Mac 客户端的 Java 项目上使用 git。对于这个 Java 项目,我还维护了用于在 Mac/Linux 上运行编译后的二进制文件的 *.sh 脚本和
我的存储库中有一个 .gitattributes 文件,看起来像这样 * text=auto *.txt text 我在存储库、全局和系统设置中取消了 core.autocrlf。根据 gitattr
请您解释一下 git 中的空白错误,它们是什么意思,什么是“压制”,我需要担心吗? (运行 msysgit,但在 linux 上与其他用户一起运行)。 autocrlf here 已经有了一个“明确”
好的,所以我已经阅读了有关该主题的所有线程,我的理解如下: 如果我在 Windows 中设置 core.autocrlf = true,git 应该在提交和推送时将我所有的 crlf 行结尾转换为 L
我在 Windows 7 中安装了 git 2.6.2。 我将 core.autocrlf 设置为 False。我想知道该设置来自哪里。我有以下奇怪的行为: > cd c:\ > git config
我在我的 git 配置中设置了这个规则: autocrlf = true 这是为了避免我们的设计师(使用 mac)无法打开由我们的开发团队(他们使用 mac 和 linux 的组合)保存的文本文件的问
我们遇到了序列化项目的问题。我们的用例是在本地使用自己的数据库并将所有项目与 Unicorn 同步.然后我们将所有项目推送到我们的 Git 存储库。本地 Git 配置设置为 autocrlf=true
根据 this question ,我知道 git 中的 core.autocrlf=true 会导致 CRLF 到 LF 的翻译。 但是当我输入时: git 配置 core.autocrlf 我明白
我在 Stack Overflow 以及 git 文档中阅读了很多关于 core.autocrlf 设置如何工作的不同问题和答案。 这是我读到的内容的理解: Unix 和 Mac OSX(OSX 之前
我没有任何从终端进行版本控制的经验,但据我所知,SmartGit 没有终端,也没有使用我可以通过终端配置的外部 git 客户端,所以我真的看不到我如何在其上执行 git 配置命令。具体来说,我想做的是
我遇到了与这个问题相同的问题:git status shows modifications, git checkout -- doesn't remove them Git 继续显示工作目录修改,即
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 4 年前。 Improve
有没有办法从 .gitattributes 中强制执行 core.autocrlf=input 以便在我的同事中传播该策略? 详细来说,我想要的是在添加 时转换为lf,并在 checkout 时保持原
我是一名优秀的程序员,十分优秀!