使用bash在windowsxp机器上运行git。我从SVN导出了我的项目,然后克隆了一个裸存储库
然后,我将导出粘贴到bare repositories目录中,并执行了以下操作:
git添加-A
然后我收到了一张信息列表,上面写着:
LF将被CRLF替换
这种转变的后果是什么?这是Visual Studio中的.NET解决方案
这些消息是由于Windows上的core.autocrlf的默认值不正确造成的
autocrlf的概念是透明地处理行尾转换。的确如此
坏消息:需要手动配置值。
好消息:每次git安装只能执行一次(每个项目设置也可以)
如何autocrlf工作:
core.autocrlf=true:core.autocrlf=input:core.autocrlf=false:
回购
^V^V^V
/ \ / \ / \
crlf->;lf->;crlf crlf->;如果\/\
/ \ / \ / \
这里crlf=win风格的行尾标记,lf=unix风格(和mac osx)
(上述三个选项中的任何一个都不影响osx之前的cr)
此警告何时显示(在Windows下)
–autocrlf=true如果您的一个文件(=很少)中有unix风格的lf,
–autocrlf=input如果您的一个文件(=几乎总是)中有win stylecrlf,
–autocrlf=false–决不
此警告是什么意思
“警告”LF将被CRLF替换;表示您(拥有autocrlf=true)将在提交签出周期后丢失unix样式的LF(它将被windows样式的CRLF替换)。Git不希望您在windows下使用unix风格的LF
“警告”CRLF将被LF替换;表示您(拥有autocrlf=input)将在提交签出周期后丢失windows样式的CRLF(它将被unix样式的LF替换)。不要在windows下使用input
展示autocrlf工作原理的另一种方式
1)正确:x->;LF->;CRLF
2) 输入:x->;LF->;LF
3) 错误:x->;x->;x
其中,x是CRLF(windows样式)或LF(unix样式),箭头表示
要提交的文件->;存储库->;签出文件
如何修复
在git安装过程中选择core.autocrlf的默认值,并将其存储在系统范围的gitconfig中(%ProgramFiles(x86)%\git\etc\gitconfig在windows上,而/etc/gitconfig在linux上)。还有(按以下顺序级联):
——”;“全球”;(每个用户)gitconfig位于~/.gitconfig,还有一个
——”;“全球”;(每个用户)gitconfig位于$XDG\u CONFIG\u HOME/git/CONFIG或$HOME/.CONFIG/git/CONFIG和
——”;“本地”;(按repo)gitconfig位于工作目录中的.git/config
因此,在工作目录中写入git config core.autocrlf,检查当前使用的值和
–git config--system core.autocrlf false#每个系统解决方案
–git config--global core.autocrlf false#每用户解决方案
–git config--local core.autocrlf false#每个项目解决方案
警告
–git-config设置可以被gittributes设置覆盖。
–crlf->;lf转换仅在添加新文件时发生,crlf回购协议中已存在的文件不受影响
道德(适用于Windows):
-如果计划在Unix下使用此项目(并且不愿意将编辑器/IDE配置为使用Unix行结尾),请使用core.autocrlf=true,
-如果计划仅在Windows下使用此项目(或已将编辑器/IDE配置为使用unix行结尾),请使用core.autocrlf=false,
–永远不要使用core.autocrlf=input,除非您有充分的理由(eg如果您在windows下使用unix实用程序或遇到makefiles问题)
PS安装git for Windows时选择什么?
如果您不打算在Unix下使用任何项目,不要同意默认的第一个选项。选择第三个(按原样签出,按原样提交)。您将不会看到此消息。永远
PPS我个人的偏好是将编辑器/IDE配置为使用Unix风格的结尾,并将core.autocrlf设置为false