标签: core.autocrlf

行结束转换如何在不同操作系统之间与git core.autocrlf一起使用

我在Stack Overflow上阅读了很多不同的问题和答案,以及关于core.autocrlf设置如何工作的git文档.

这是我对以下内容的理解:

Unix和Mac OSX(OSX之前使用CR)客户端使用LF行结尾.
Windows客户端使用CRLF行结尾.

当在客户端上将core.autocrlf设置为true时,git存储库始终以LF行结束格式存储文件,并且客户端(即Windows)在签出/提交时来回转换客户端文件中的行结尾-LF行结尾,无论行结尾文件在客户端上的格式是什么(这与Tim Clem的定义不一致 - 请参阅下面的更新).

这是一个矩阵,试图为带有问号的core.autocrlf的'input'和'false'设置记录相同的内容,我不确定行结束转换行为.

我的问题是:

  1. 问号应该是什么?
  2. 这个矩阵对"非问号"是否正确?

我将从答案中更新问号,因为似乎已形成共识.

                       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?)     conversion

checkout |  convert to        ?                 no
existing |  CRLF       (no conversion?)     conversion

我并不是真的在寻找各种设置的利弊意见.我只是在寻找数据,这清楚地说明了如何期望git能够在三种设置中运行.

-

2012年4月17日更新:阅读由JJD在评论中链接的Tim Clem的文章后,我修改了上表中"未知"值中的一些值,并更改了"checkout existing | true to conversion"到CRLF而不是转换为客户".以下是他给出的定义,这些定义比我在其他地方看到的更清楚:

core.autocrlf …

git newline core.autocrlf

208
推荐指数
6
解决办法
10万
查看次数

在使用"text"属性对文件进行规范化后,如何强制git检出主分支并删除回车?

好的,所以我.gitattributes用这样的行添加了文件

*.css text
*.js text
etc...
Run Code Online (Sandbox Code Playgroud)

然后我按照http://git-scm.com/docs/gitattributes#_checking-out_and_checking-in上的说明进行操作

$ rm .git/index     # Remove the index to force Git to
$ git reset         # re-scan the working directory
$ git status        # Show files that will be normalized
$ git add -u
$ git add .gitattributes
$ git commit -m "Introduce end-of-line normalization"
Run Code Online (Sandbox Code Playgroud)

但是现在我的工作副本仍然有回车!我有未跟踪的文件,我想保留.如何使用规范化文件再次git checkout master分支?

我知道文件在存储库中是规范化的,因为当我克隆repo时,我有所有没有回车符的文件.

git newline core.autocrlf

89
推荐指数
2
解决办法
23万
查看次数

Windows上的Git:crlf设置是什么意思?

我不了解有关的git的CRLF设置的复杂性:core.autocrlf,core.safecrlf

我正在团队中开发一个跨平台的项目,并希望Windows和Linux开发人员能够在没有git标记文件的情况下一起工作,因为行结束样式.

各种设置意味着什么?选择任何选项会产生什么后果?对我的案子来说,最好的解决方案是什么?

是的,我知道这个问题,那里的答案没有洞察力,因此没有帮助.

linux windows git newline core.autocrlf

69
推荐指数
2
解决办法
2万
查看次数

如何在所有克隆/机器上禁用Git end-of-line(CRLF to LF)?

正如人们可以 其他 帖子中收集的那样,Git的终端规范化有其优点和缺点.我有一个特定的Windows项目,我认为最好的办法是完全禁用行尾规范化.也就是说,我希望保留所有换行符(大部分都是CRLF完整的),而不是让git将它们规范化为 - LF仅在幕后,我希望该更改能够影响所有计算机上存储库的所有克隆.问题是最有效的方法.

大多数关于Git行尾规范化的讨论都是根据core.autocrlf,我可以通过设置来实现我的目标core.autocrlf=false.但是,这是一个git-config设置,我相信必须在每台机器上分别设置它.如果为true,那似乎容易出错,特别是因为msysgit安装程序会将其引导到设置中core.autocrlf=true.

git newline gitattributes core.autocrlf

64
推荐指数
1
解决办法
2万
查看次数

env:bash\r \n:没有这样的文件或目录

我正在尝试从这里安装YouCompleteMe .

当我执行:

    ./install.sh --clang-completer
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

    env: bash\r: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我不知道环境变量有什么问题.这是我的bash路径:

which bash 
/bin/bash
Run Code Online (Sandbox Code Playgroud)

我需要将其更改为/ usr/bash吗?如果是,那我该怎么做?我尝试更改〜/ .bashrc文件,但它没有用.

windows git bash line-endings core.autocrlf

54
推荐指数
8
解决办法
4万
查看次数

为什么显示"正在更新Git索引失败"

我正在使用Windows.暂存文件时,我收到此错误.

Updating the Git index failed. A rescan will be automatically started to resynchronize git-gui.

后跟一个已从LF转换为CRLF的文件列表

在用Git使用跨平台阅读CRLF/LF问题之后,我或多或少地了解了发生了什么,我正在尝试确定哪种autocrlf设置最适合我,但我不明白为什么Git说更新索引失败.我的理解是它已经转换了EOF,所以它的问题是什么,为什么它告诉我更新索引失败了.我是否需要修复某些内容(除了选择适当的autocrlf设置)或者我可以继续

然后,我有两个选项继续和解锁索引,这些是什么意思,什么是最好的行动方案.

windows git newline core.autocrlf

44
推荐指数
1
解决办法
2万
查看次数

Git,将文件添加到存储库会给LF - > CRLF带来致命错误

我是git的新手,我需要一些帮助.我在windows上使用msysgit.

当我执行命令时,git add [folderName]我得到了响应:

fatal: LF would be replaced by CRLF in [.css file or .js file]
Run Code Online (Sandbox Code Playgroud)

然后,如果你尝试做一个提交没有任何反应.

$ git commit
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       so01/
nothing added to commit but untracked files present (use "git add" to track)
Run Code Online (Sandbox Code Playgroud)

其中一些css/js文件是从网上下载的,所以我猜这就是为什么有LF.如果我打开文件并剪切/粘贴内容,那么我会在下一个文件上收到错误,依此类推.

任何帮助都感激不尽.

编辑

设置core.autocrlf为false似乎可以解决问题,但我在很多帖子上都没有将此选项设置为false.

有人能指出我在哪里可以找出在这种情况下可能出现的问题?

git version-control newline msysgit core.autocrlf

40
推荐指数
3
解决办法
3万
查看次数

即使使用autocrlf = false,git status也会显示修改

我遇到了与此问题相同的问题:git status显示修改,git checkout - <file>不会删除它们

Git继续显示工作目录修改,即使git config --global core.autocrlf false:

E:\_dev\github\Core [master +0 ~93 -0]> git config --get-all core.autocrlf
false
false
Run Code Online (Sandbox Code Playgroud)

(注意我甚--system至将设置设置为false)

为什么看起来Git仍在修改我的行尾?

试图摆脱修改

底线

E:\_dev\github\Core [master +0 ~93 -0]> git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   tools/StatLight/StatLight.EULA.txt
... more changes ... …
Run Code Online (Sandbox Code Playgroud)

git revert git-status core.autocrlf

35
推荐指数
4
解决办法
1万
查看次数

git-svn如何处理行结尾?

我使用Git本身如何处理行尾很高兴,通过core.autocrlf,core.eol+ gitattributes(Tim的文章是优秀).

我有一个autocrlf设置为的Windows Git仓库true.因此,所有文本文件都存储在repo中,LF并作为工作目录存放在工作目录中CRLF.这个仓库是从一个SVN仓库中克隆出来的,我们仍然使用这个仓库从/拉到(SVN仓库是我们用于触发CI等的中央,受祝福的仓库).

但我不知道git-svn在推/拉操作期间如何处理行结尾.

任何人都可以解释git-svn在这个例子中做什么?

newline git-svn eol core.autocrlf

33
推荐指数
1
解决办法
4961
查看次数

有没有办法确定现有git仓库中的行结尾?

有没有办法确定现有git存储库中的行结尾?

如果我克隆现有存储库,如何确定创建者使用了哪个core.autocrlf?

我仍然不确定core.autocrlf的最佳设置,例如在Windows机器上(因为有多种意见: 使用代码分发git配置https://help.github.com/articles/dealing-with-line-结局)

额外的问题:您是否可以在Windows上(使用标准工具)确定repo是否在所有提交中都有混合行结尾(错误的core.autocrlf设置)?

git core.autocrlf

24
推荐指数
2
解决办法
8853
查看次数