如何避免git应用更改行尾



我有一个包含core.eol=crlfcore.autocrlf=truecore.safecrlf=true的git repo集。

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

git apply --ignore-whitespace mychanges.patch

(似乎我必须使用--ignore-whitespace才能成功应用补丁。)

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

检查Git 2.14.x/2015(2015年第三季度)是否存在问题

参见Torsten Bögershausen(tboegi)的commit c24f3ab(2017年8月19日)和commit 2fea9de(2017年八月13日)
(由Junio C Hamano合并——gitster——提交a17483f,2017年8月27日)

apply:使用CRLF提交的文件应往返diff并应用

当一个文件已经用CRLF提交,但现在.gitattributes说"* text=auto"(或者core.autocrlftrue)时,以下内容不会往返,git apply失败:

printf "Added linern" >>file &&
git diff >patch &&
git checkout -- . &&
git apply patch

在应用修补程序之前,将转换工作树中的文件转换为索引格式(干净过滤器、CRLF转换…)。
此处,当使用CRLF提交时,不应转换行尾

我不允许我的源代码控制系统控制我的行结尾。Auto crlf为false,在没有烦人^M的情况下显示diffs是通过在eol时将core.whitespace设置为cr来完成的。现在diff输出将更易于阅读。

尝试一个干净的工作目录:

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

最新更新