我有一个包含core.eol=crlf
、core.autocrlf=true
和core.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.autocrlf
是true
)时,以下内容不会往返,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