我曾被Windows/Linux git的行结束问题所困扰。通过GitHub, MSysGit和其他来源,似乎最好的解决方案是让您的本地回购设置为使用linux风格的行结束符,但设置核心。专制是真实的。不幸的是,我没有做到这一点足够早,所以现在每次我拉改变线结束是borked。
我以为我在这里找到了答案,但我不能让它为我工作。我的Linux命令行知识有限,所以我甚至不确定“xargs fromdos”行在他的脚本中起什么作用。我不断收到关于不存在这样的文件或目录的消息,当我设法将其指向一个现有目录时,它告诉我我没有权限。
我已经在Windows和Mac OS X终端上尝试了MSysGit。
gitattributes的git文档现在记录了另一种“修复”或规范化项目中所有行结束符的方法。以下是要点:
$ echo "* text=auto" >.gitattributes
$ git add --renormalize .
$ git status # Show files that will be normalized
$ git commit -m "Introduce end-of-line normalization"
如果有任何文件不应该
正常显示在git状态,
之前不设置它们的文本属性
运行git add -u。
manual.pdf语境
相反,git所做的文本文件
未检测可有归一化
手动启用。
weirdchars.txt文本
这利用了2018年1月发布的git v2.16.0中添加的一个新的——renorize标志。
但如果你有“未分级删除的文件”,它可能会失败,因此先执行这些文件,比如:
git ls-files -z --deleted | xargs -0 git add
对于旧版本的git,有更多的步骤:
$ echo "* text=auto" >>.gitattributes
$ rm .git/index # Remove the index to force git to
$ git reset # re-scan the working directory
$ git status # Show files that will be normalized
$ git add -u
$ git add .gitattributes
$ git commit -m "Introduce end-of-line normalization"
“| xargs fromdos”从标准输入(文件find查找)中读取,并将其用作fromdos命令的参数,该命令转换行结束符。(fromdos在那些环境中是标准的吗?我习惯使用dos2unix)。注意,你可以避免使用xargs(特别是当你有足够多的文件,而参数列表对于xargs来说太长时):
find <path, tests...> -exec fromdos '{}' \;
or
find <path, tests...> | while read file; do fromdos $file; done
我不是很确定你的错误信息。我成功地测试了这个方法。哪个程序在生成它们?哪些文件/目录您没有权限?不过,下面让我们来猜测一下你的目标是什么:
获取脚本“file not found”错误的一个简单方法是使用相对路径——使用绝对路径。同样,如果你没有让你的脚本可执行(chmod +x),你可能会得到一个权限错误。
添加评论,我会试着帮你解决!
gitattributes的git文档现在记录了另一种“修复”或规范化项目中所有行结束符的方法。以下是要点:
$ echo "* text=auto" >.gitattributes
$ git add --renormalize .
$ git status # Show files that will be normalized
$ git commit -m "Introduce end-of-line normalization"
如果有任何文件不应该
正常显示在git状态,
之前不设置它们的文本属性
运行git add -u。
manual.pdf语境
相反,git所做的文本文件
未检测可有归一化
手动启用。
weirdchars.txt文本
这利用了2018年1月发布的git v2.16.0中添加的一个新的——renorize标志。
但如果你有“未分级删除的文件”,它可能会失败,因此先执行这些文件,比如:
git ls-files -z --deleted | xargs -0 git add
对于旧版本的git,有更多的步骤:
$ echo "* text=auto" >>.gitattributes
$ rm .git/index # Remove the index to force git to
$ git reset # re-scan the working directory
$ git status # Show files that will be normalized
$ git add -u
$ git add .gitattributes
$ git commit -m "Introduce end-of-line normalization"