我在 Windows XP 上运行 Git机器, 使用 Bash .我从 SVN 导出了我的项目,然后克隆一个裸存储库。
然后我将导出粘贴到裸存储库目录中,并做了一个:
git add -A
然后我得到一个消息列表,上面写着:LF will be replaced by CRLF
这种转换的后果是什么?这是 .NET Visual Studio 中的解决方案。
最佳答案
这些消息是由于 core.autocrlf
的默认值不正确造成的。在 Windows 上。autocrlf
的概念是透明地处理行尾转换。确实如此!
坏消息 :该值需要手动配置。
好消息 :每个 Git 安装只应该执行一次(也可以按项目设置)。
如何autocrlf
作品 :
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repository repository repository
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
这里crlf
= 胜利风格的行尾标记,lf
= unix 风格(自 Mac OS X 起也用于 Mac)。(pre-osx
cr
不受上述三个选项中的任何一个的影响。)此警告何时出现(在 Windows 下)?
–
autocrlf
= true
如果你有 unix 风格的 lf
在您的一个文件中(= 很少),–
autocrlf
= input
如果你有win-style crlf
在您的一个文件中(= 几乎总是),–
autocrlf
= false
- 绝不!这个警告是什么意思?
警告“LF 将被 CRLF 取代”表示您(拥有
autocrlf
= true
)将在提交 checkout 周期后丢失您的 unix 风格的 LF(它将被 windows 风格的 CRLF 取代)。 Git 不希望你在 Windows 下使用 unix 风格的 LF。警告“CRLF 将被 LF 取代”表示您(拥有
autocrlf
= input
)将在提交 checkout 周期后丢失您的 windows 样式 CRLF(它将被 unix 样式 LF 取代)。不要使用 input
在 Windows 下。另一种展示方式
autocrlf
作品 1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
其中 x 是 CRLF(windows 风格)或 LF(unix 风格),箭头代表file to commit -> repository -> checked out file
如何修复 core.autocrlf
的默认值在 Git 安装期间选择并存储在系统范围的 gitconfig 中(%ProgramFiles(x86)%\git\etc\gitconfig
在 Windows 上,/etc/gitconfig
在 Linux 上)。还有(按以下顺序级联):– “全局”(每个用户)gitconfig 位于
~/.gitconfig
, 完后还有–
$XDG_CONFIG_HOME/git/config
处的“全局”(每个用户)gitconfig或 $HOME/.config/git/config
和–
.git/config
上的“本地”(每个 repo)gitconfig在工作目录中。所以,写
git config core.autocrlf
在工作目录中检查当前使用的值和–
git config --system core.autocrlf false
# 每个系统的解决方案–
git config --global core.autocrlf false
# 每个用户的解决方案–
git config --local core.autocrlf false
# 每个项目的解决方案警告
–
git config
设置可以被 gitattributes
覆盖设置。–
crlf -> lf
转换仅在添加新文件时发生,crlf
repo 中已经存在的文件不受影响。道德 (对于 Windows):
- 使用
core.autocrlf
= true
如果您也打算在 Unix 下使用这个项目(并且不愿意将您的编辑器/IDE 配置为使用 unix 行尾),- 使用
core.autocrlf
= false
如果您打算仅在 Windows 下使用此项目(或者您已将编辑器/IDE 配置为使用 unix 行尾),- 从不使用
core.autocrlf
= input
除非您有充分的理由(例如,如果您在 Windows 下使用 unix 实用程序或遇到 makefile 问题),PS 安装 Git for Windows 时要选择什么?
如果您不打算在 Unix 下使用任何项目,请不要同意默认的第一个选项。选择第三个( 按原样 checkout ,按原样提交 )。您不会看到此消息。曾经。
PPS:我个人的偏好是配置编辑器/IDE 使用 unix 风格的结尾,并设置
core.autocrlf
至false
.
关于linux - Git 用 CRLF 替换 LF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1967370/