我使用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突然使所有仅更改一个字母的文件都标记为更改了文件中的所有行,这显然是在代码检查过程中的主要麻烦。
所以我搜索周围,我发现了一些例子的解决方案,在这里左右,但所有应用添加额外的参数git add和做各种怪异的东西。我不认为我不能在SourceTree的GUI中插入自定义命令,这是我最想知道的事情。它怎么变得如此凌乱?最重要的是,我是否只能回到原来的状态(无论是什么状态),而不是每次要登台和提交时都必须发出额外的命令?
请注意; 我不怕命令行,我几乎整天都在工作。但是我只是喜欢在GUI(例如SourceTree)中进行代码审查。
任何有助于我恢复正常的提示都将极大地帮助我!
有没有办法让git commit忽略行尾?
我设法弄清楚如何使git diff忽略行尾
git diff --ignore-space-at-eol
这样,我就可以只显示我实际编辑的行。
但是问题是默认情况下git diff认为我的文件已全部更改,然后相应地提交更改。
我也尝试过
git config --system core.autocrlf true
git config --system core.autocrlf false
Run Code Online (Sandbox Code Playgroud)
这些都没有解决我的问题!
我已经设置了git的配置,以便'git config --list'给出以下内容:
core.editor=vim
core.whitespace=trailing-space,space-before-tab,indent-with-non-tab
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
Run Code Online (Sandbox Code Playgroud)
但是,当我想提交文件whit尾随空格或其他空白问题时,它永远不会抱怨.不知道我能做什么.
我想要一个预提交 git 钩子来检查(如果可能的话,自动删除)尾随空格。
\n在让 git 在提交之前自动删除尾随空格中,我找到了一个 github 页面的链接,其中实现了这样的钩子。这工作正常,但正如该页面上的@VonC\n提到的
\n\n\n由于该挂钩获取每个文件的文件名,因此我建议\n小心某些类型的文件:您不想删除\n.md(markdown)文件中的尾随空格!\xe2\x80\x93 VonC
\n
再往下
\n\n\n我宁愿让钩子能够检测 .md 文件而不删除空格,而不是要求最终用户在 git 提交上添加 --no-verify 选项。\xe2\x80\x93 VonC
\n
据我所知,没有提到解决方案。
\n由于我在项目中使用 .md 文件并故意使用尾随空格,因此这对我来说是一个问题。
\n解决方案可能很简单,但我对编写脚本所用的语言没有经验(目前也没有兴趣学习它)。
这是脚本(github 的副本):
\n#!/bin/bash\n#\n\n# A git hook script to find and fix trailing whitespace\n# in your commits. Bypass it with the --no-verify option\n# to git-commit\n#\n# usage: make a soft link to this file, e.g., ln -s ~/config/pre-commit.git.sh ~/some_project/.git/hooks/pre-commit\n\n# detect platform\nplatform="win"\nuname_result=`uname`\nif [ …Run Code Online (Sandbox Code Playgroud)