我使用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上找到了一些solutions的examples,但是这些都是在git add
上添加额外的参数,做各种奇怪的事情。除了我不认为我可以在SourceTree的GUI中插入自定义命令之外,我最想知道的是;它怎么会变得如此混乱?最重要的是,我不能回到它是怎么样的(不管它是什么),而不是每次我想登台和提交时都必须发出额外的命令吗?
请注意:我不害怕命令行,我几乎整天都在它上面工作,但是我只是喜欢在一个GUI上做代码评审,比如SourceTree。
任何能让我恢复正常的建议都会对我有很大的帮助!
4条答案
按热度按时间pkln4tw61#
设置“忽略空白”。见屏幕截图:
dfty9e192#
Atlassian Community上有一个关于这个问题的discussion。修复方法是将设置“显示空白”切换为“忽略空白”。
erhoui1w3#
在你的~/.gitconfig中,尝试添加以下部分:
https://git-scm.com/docs/git-apply中介绍了此操作的完整详细信息
apply.whitespace的选项有(在git-scm页面中):
看起来OSX下SourceTree的默认设置是“error”,至少在git 2.6.4中是这样,或者它可能与我们的默认设置
core.autocrlf = true
交互dgenwo3n4#
令人惊讶的是,对我来说,解决方案做完全相反的接受的答案,这是从“忽略空白”切换到“显示空白”,如this answer中所述。