Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git for Windows:can';似乎无法避免CR/LF差异修补程序应用错误_Windows_Git_Diff_Apply - Fatal编程技术网

git for Windows:can';似乎无法避免CR/LF差异修补程序应用错误

git for Windows:can';似乎无法避免CR/LF差异修补程序应用错误,windows,git,diff,apply,Windows,Git,Diff,Apply,因此,我在Windows中运行git,并在*nix上运行repo,git检查Windows样式的换行符(换行符CRLF),但提交*nix样式(LF),然而,无论我做了什么尝试,我都无法在没有致命障碍的情况下获得diff/apply 例如,我从一个提交运行到另一个提交的文件的差异,如: git diff commit1 commit2>patch.diff 但是,当我运行git apply patch.diff时,会出现如下错误: 尾随空格 修补程序失败 修补程序不适用 我尝试过在eol设置git

因此,我在Windows中运行git,并在*nix上运行repo,git检查Windows样式的换行符(换行符CRLF),但提交*nix样式(LF),然而,无论我做了什么尝试,我都无法在没有致命障碍的情况下获得diff/apply

例如,我从一个提交运行到另一个提交的文件的差异,如:

git diff commit1 commit2>patch.diff

但是,当我运行git apply patch.diff时,会出现如下错误:

尾随空格
修补程序失败
修补程序不适用

我尝试过在eol设置
git config--global core.autocrlf true
,尝试过
git apply--ignore space change--ignore whitespace patch.diff
,以及
git config--global core.whitespace cr
,即使它工作正常,应用程序也显示几乎每一行代码都因为换行而改变

如果我在Git GUI或WinMerge中检查应用的补丁,它会显示正确的更改,只是因为它们忽略了换行符的更改,但是diff或apply命令会考虑换行符的差异,而我在web上找到的所有尝试都不会得到正确的结果

我发现了一些关于git rm--cached-r的信息。但是它需要提交所有带有“固定”换行符的文件。。。这对我们的项目来说是不可行的(也不应该是必要的)


我只是没有运行正确的组合、命令和选项,或者我应该怎么做?

当你运行这些git命令时,你在使用什么shell?您可能希望使用
cat--show all
检查diff文件,并查看文件中包含哪些空格。例如,Powershell导致在重定向之后创建unicode文件Git 2.14.x/2.15(2017年第3季度)应该会改进这一点:看,我认为我们现在可以把这个好问题作为一个重复来解决