12

我有一个 git repo 设置为core.eol=crlf,core.autocrlf=truecore.safecrlf=true.

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

git apply --ignore-whitespace mychanges.patch

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

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

4

3 回答 3

4

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

请参阅Torsten Bögershausen ( )的提交c24f3ab ( 2017 年 8 月 19 日)和提交 2fea9de(2017 年 8 月 13 日) 。(由Junio C Hamano 合并 -- --提交 a17483f中,2017 年 8 月 27 日)tboegi
gitster

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

当文件已使用 CRLF 提交但现在显示.gitattributes* text=auto”(或core.autocrlfis true)时,以下内容不会往返,git apply失败:

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

在应用补丁之前,工作树中的文件被转换为索引格式(干净的过滤器,CRLF 转换,...​​)。
在这里,当使用 CRLF 提交时,不应转换行尾。

于 2017-09-04T21:12:23.053 回答
3

我不允许我的源代码控制系统控制我的行尾。Auto crlf 是错误的,并且通过将 core.whitespace 设置为 cr-at-eol 来显示没有烦人的 ^M 的差异。现在 diff 输出将更易于阅读。

于 2011-06-10T15:53:28.060 回答
0

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

git apply mychanges.patch
git diff -w > mychangesnows.patch
git reset --hard
git apply mychangesnows.patch
于 2012-06-25T12:21:14.953 回答