如何避免git-apply更改行结尾

时间:2011-06-10 15:32:36

标签: git newline eol

我的git repo设置为core.eol=crlfcore.autocrlf=truecore.safecrlf=true

当我从另一个crlf repo应用补丁到我的仓库时,受影响文件的所有行结尾都会更改为lf。目前我正在应用补丁:

git apply --ignore-whitespace mychanges.patch

(似乎我必须使用--ignore-whitespace来获得成功应用的补丁。)

我目前的工作是在文件上运行unix2dos。是否有更好的方法来申请符合我的eol设置?

3 个答案:

答案 0 :(得分:2)

我不允许我的源代码管理系统控制我的行结尾。自动crlf是假的并显示差异而没有烦人的^ M是通过将core.whitespace设置为cr-at-eol来完成的。现在差异输出将更好阅读。

答案 1 :(得分:2)

使用Git 2.14.x / 2.15(2015年第3季度)

检查问题是否仍然存在

commit c24f3ab(2017年8月19日)和commit 2fea9de(2017年8月13日)Torsten Bögershausen (tboegi)Junio C Hamano -- gitster --于2017年8月27日commit a17483f合并)

  

apply:使用CRLF提交的文件应该往返差异并应用

     

使用CRLF提交文件但现在.gitattributes说“* text=auto”(或core.autocrlftrue)时,以下内容不是   往返,git apply失败:

printf "Added line\r\n" >>file &&
git diff >patch &&
git checkout -- . &&
git apply patch
  

在应用补丁之前,将转换工作树中的文件   进入索引格式(清理过滤器,CRLF转换,...​​...)   此处,在提交CRLF时,不应转换行结尾。

答案 2 :(得分:0)

尝试干净的工作目录:

git apply mychanges.patch
git diff -w > mychangesnows.patch
git reset --hard
git apply mychangesnows.patch