使用bash在Windows XP计算机上运行git.我从SVN导出了我的项目,然后克隆了一个裸存储库.
然后我将导出粘贴到裸存储库目录中,并执行了:
git add -A
Run Code Online (Sandbox Code Playgroud)
然后我得到一条消息列表:
LF将由CRLF取代
这种转变的后果是什么?这是Visual Studio中的.NET解决方案.
我想强制git在Windows下检出文件LF而不是CR+LF.我检查了两个配置选项,但我无法找到正确的设置组合.
我希望它将所有文件转换为LF并保留LF文件.
备注:我使用autocrlf = input但是这只是在你提交时修复文件.我想强制它让他们使用LF.
可能我不是那么清楚:存储库已经在使用LF但是使用msysgit检出的文件正在使用CR+LF,我想强制msysgit使用它们LF:强制Unix行结束.
>git config --list | grep crlf
core.autocrlf=input
Run Code Online (Sandbox Code Playgroud) 我被git用Windows/Linux行结束问题所困扰.看来,通过GitHub,MSysGit和其他来源,最好的解决方案是让你的本地存储库设置为使用linux风格的行结尾,但设置core.autocrlf为true.不幸的是,我没有及早做到这一点,所以现在每次我进行更改时,行结尾都会被剔除.
我以为我在这里找到了答案,但我无法让它为我工作.我的Linux命令行知识充其量是有限的,所以我甚至不确定"xargs fromdos"行在他的脚本中做了什么.我不断收到关于没有这样的文件或目录的消息,当我设法将它指向现有目录时,它告诉我我没有权限.
我在Windows上通过Mac OS X终端尝试使用MSysGit.
在为项目设置 Git 时,我注意到行尾规范化在 Linux 和 Windows 上的工作方式略有不同。
据我了解有关此主题的 Git 文档,Windows 上的行为是正确的。具体来说,当.gitattributes文件存在时,它应该覆盖core.autocrlf设置。
下表显示了我所做的一些实验的结果。最左边的两列显示.gitattributes文件和core.autocrlf设置。其他列显示以下git命令的结果:
git rm --cached <file> (强制下一次结帐以执行行规范化处理)。git checkout HEAD -- <file> (签出文件,应用行结束规范化)git ls-files --eol <file> (检查工作树中的行尾)+----------------+---------------+-------------+-- ------------+--------------+-------------- ----+----------------------------+ | .git 属性 | core.autocrlf | Linux 2.7.2 | Linux 2.11.0 | Linux 2.16.2 | Windows 2.12.2.windows.2 | Windows 2.16.1.windows.1 | | | | | | | | | +----------------+---------------+-------------+-- ------------+--------------+-------------- ----+----------------------------+ | 无 | 真实| 带crlf | 带crlf …