使用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

08-27 20:49