我的git repo设置为core.eol=crlf
,core.autocrlf=true
和core.safecrlf=true
。
当我从另一个crlf
repo应用补丁到我的仓库时,受影响文件的所有行结尾都会更改为lf
。目前我正在应用补丁:
git apply --ignore-whitespace mychanges.patch
(似乎我必须使用--ignore-whitespace
来获得成功应用的补丁。)
我目前的工作是在文件上运行unix2dos
。是否有更好的方法来申请符合我的eol设置?
答案 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.autocrlf
为true
)时,以下内容不是 往返,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