使用bash在Windows XP计算机上运行git。我从SVN导出了项目,然后克隆了一个裸仓库。
然后,我将导出粘贴到裸仓库目录中,并执行以下操作:
git add -A
然后,我得到了一条消息列表:
这种转换的后果是什么?这是Visual Studio中的.NET解决方案。
最佳答案
这些消息是由于Windows上core.autocrlf
的默认值不正确所致。autocrlf
的概念是透明地处理行尾的转换。确实如此!
坏消息:需要手动配置值。
好消息:每次git安装一次只能完成一次(也可以按项目设置)。
autocrlf
的工作方式:
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
这里crlf
= win风格的行尾标记,lf
= unix风格(和mac osx)。(对于以上三个选项,osx之前的
cr
均不受影响)该警告何时显示(在Windows下)
–
autocrlf
= true
,如果其中一个文件中有unix风格的lf
(=很少),–
autocrlf
= input
,如果其中一个文件中有win风格的crlf
(=几乎总是),–
autocrlf
= false
–绝不!这个警告是什么意思
警告“LF将被CRLF替换”表示您(拥有
autocrlf
= true
)将在提交 check out 周期后丢失您的unix样式的LF(它将被Windows样式的CRLF替换)。 Git不希望您在Windows下使用Unix风格的LF。警告“CRLF将被LF取代”表示您(拥有
autocrlf
= input
)将在提交 check out 周期后丢失Windows风格的CRLF(它将被unix风格的LF取代)。不要在Windows下使用input
。展示
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
如何修复在git安装期间选择
core.autocrlf
的默认值,并将其存储在系统范围的gitconfig(%ProgramFiles(x86)%\git\etc\gitconfig
)中。也有(按以下顺序层叠):–位于
~/.gitconfig
的“全局”(每用户)gitconfig,另一个–
$XDG_CONFIG_HOME/git/config
或$HOME/.config/git/config
的“全局”(每用户)gitconfig和–工作目录中
.git/config
的“本地”(按仓库)gitconfig。因此,在工作目录中写入
git config core.autocrlf
以检查当前使用的值,并-将
autocrlf=false
添加到系统范围内的gitconfig中#每个系统的解决方案–
git config --global core.autocrlf false
#每个用户的解决方案–
git config --local core.autocrlf false
#每个项目的解决方案警告
–
git config
设置可以覆盖gitattributes
设置。–
crlf -> lf
转换仅在添加新文件时发生, repo 中已经存在的crlf
文件不受影响。道德(对于Windows):
-如果您也打算在Unix下使用此项目(并且不愿意将您的编辑器/IDE配置为使用Unix行尾),请使用
core.autocrlf
= true
,-如果您打算仅在Windows下使用此项目(或您已将编辑器/IDE配置为使用Unix行尾),请使用
core.autocrlf
= false
,-除非您有充分的理由(例如,如果您在Windows下使用Unix实用程序或遇到makefile问题),否则请勿使用
core.autocrlf
= input
,PS 为Windows安装git时要选择什么?
如果您不打算在Unix下使用任何项目,请不要同意默认的第一个选项。选择第三个(按原样 Checkout,按原样提交)。您不会看到此消息。曾经。
PPS我个人的喜好是将编辑器/IDE 配置为使用Unix样式的结尾,并将
core.autocrlf
设置为false
。