'git apply'失败,返回代码1:SourceTree中的尾随空格

ego6inou  于 2023-03-11  发布在  Git
关注(0)|答案(4)|浏览(315)

我使用SourceTree是为了在提交之前轻松地检查代码。在SourceTree中,我经常只暂存和提交我在文档中修改的部分行。
几天前,我从一个在Windows上工作的程序员那里收到了一段代码,这段代码在行尾处引起了一些麻烦。如果我没记错的话,我随后将core.autocrlf设置为true,这修复了windows文件的问题。然而,从那一刻起,我正在处理的另一个repo遇到了严重的问题。如果我只想在SourceTree中暂存文件的一部分,我现在会得到一个严重的错误,说git apply' failed with code 1: [/a/long/path/here] trailing whitespace in SourceTree。所以我想我需要将core.autocrlf设置回原来的样子,这是我“假定”的(“万物之母..等”)false(我以前从来没有搞砸过core.autocrlf)。所以我把它设置为false,这会突然使我只更改了一个字母的所有文件都被标记为更改了文件中的所有行,这显然是代码评审期间的主要麻烦。
所以我四处搜索,在SO上找到了一些solutionsexamples,但是这些都是在git add上添加额外的参数,做各种奇怪的事情。除了我不认为我可以在SourceTree的GUI中插入自定义命令之外,我最想知道的是;它怎么会变得如此混乱?最重要的是,我不能回到它是怎么样的(不管它是什么),而不是每次我想登台和提交时都必须发出额外的命令吗?
请注意:我不害怕命令行,我几乎整天都在它上面工作,但是我只是喜欢在一个GUI上做代码评审,比如SourceTree。
任何能让我恢复正常的建议都会对我有很大的帮助!

pkln4tw6

pkln4tw61#

设置“忽略空白”。见屏幕截图:

dfty9e19

dfty9e192#

Atlassian Community上有一个关于这个问题的discussion。修复方法是将设置“显示空白”切换为“忽略空白”。

erhoui1w

erhoui1w3#

在你的~/.gitconfig中,尝试添加以下部分:

[apply]
    whitespace = nowarn

https://git-scm.com/docs/git-apply中介绍了此操作的完整详细信息
apply.whitespace的选项有(在git-scm页面中):

  • “nowarn”关闭尾随空格警告。
  • “warn”会输出一些此类错误的警告,但会按原样应用修补程序(默认)。
  • “fix”会输出一些此类错误的警告,并在修复后应用修补程序
  • “error”会输出一些此类错误的警告,并拒绝应用修补程序。
  • “error-all”类似于error,但显示所有错误。

看起来OSX下SourceTree的默认设置是“error”,至少在git 2.6.4中是这样,或者它可能与我们的默认设置core.autocrlf = true交互

dgenwo3n

dgenwo3n4#

令人惊讶的是,对我来说,解决方案做完全相反的接受的答案,这是从“忽略空白”切换到“显示空白”,如this answer中所述。

相关问题