【问题标题】:'git apply' failed with code 1: trailing whitespace in SourceTree'git apply' 失败,代码 1:SourceTree 中的尾随空格
【发布时间】:2015-12-07 01:15:09
【问题描述】:

我使用SourceTree 在提交前轻松审查代码。在 SourceTree 中,我经常暂存和提交我在文档中更改的部分行。

几天前,我收到了一位在 Windows 上工作的程序员发来的一段代码,它在行尾方面造成了一些问题。如果我没记错的话,我将core.autocrlf 设置为true,这解决了windows 文件的问题。 然而,从那一刻起,我在另一个我正在处理的回购中遇到了重大问题。如果我只想在 SourceTree 中暂存文件的一部分,我现在会收到一个大错误,说 git apply' failed with code 1: [/a/long/path/here] trailing whitespace in SourceTree。所以我想我需要将core.autocrlf 设置回原来的样子,我“假设”是(“所有人的母亲……等等”)false(我以前从未与core.autocrlf 混淆)。所以我将它设置为false,这突然使我只更改了一个字母的所有文件都被标记为更改了文件中的所有行,这显然是代码审查期间的主要麻烦。

所以我四处搜索,在 SO 上找到了一些 examplessolutions,但这都使用向 git add 添加额外参数并做各种奇怪的事情。除了我不认为我可以在 SourceTree 的 GUI 中插入自定义命令这一事实之外,我最想知道的是;怎么变得这么乱?最重要的是,我不能回到原来的样子(不管是什么),而不必每次我想要暂存和提交时都发出额外的命令吗?

请注意;我不怕命令行,我几乎整天都在它上面工作。但我只是喜欢在 SourceTree 等 GUI 中进行代码审查。

任何可以帮助我恢复正常的提示都会对我有很大帮助!

【问题讨论】:

    标签: git line-endings core.autocrlf


    【解决方案1】:

    设置“忽略空格”。见截图:

    【讨论】:

    • 我宁愿将其作为评论添加到@Mykola 的答案中,但您似乎无法在 cmets 中添加图像:(。
    • 我遇到了 OP 的问题,但已经将 Sourcetree 的差异设置设置为“忽略空格”。切换到“显示空白”为我解决了这个问题。
    • 这适用于 Sourcetree v4.1.5 (2021)
    【解决方案2】:

    Atlassian 社区上有一个discussion 讨论这个问题。解决方法是将 Show Whitespace 设置切换为 Ignore Whitespace。

    【讨论】:

      【解决方案3】:

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

      [apply]
          whitespace = nowarn
      

      https://git-scm.com/docs/git-apply 介绍了此功能的全部详细信息

      apply.whitespace 的选项是(来自 git-scm 页面):

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

      似乎 OS X 下 SourceTree 的默认值是“错误”,至少在 git 2.6.4 中是这样。或者它可能与我们默认的core.autocrlf = true进行交互

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-23
        • 2016-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-06
        • 2014-04-25
        相关资源
        最近更新 更多