忽略所有 git 命令中的空格更改

忽略所有 git 命令中的空格更改

我发现很多网站解释了如何让 git 在您更改行结尾时发出警告,或者解释如何使用其他各种技术来防止您弄乱整个文件。假设现在已经太晚了——树已经提交了切换文件行结尾的提交,因此git diff显示了旧文件的减去,然后添加了具有相同内容的新文件

我正在寻找一个 git 配置选项或命令行标志,告诉diff您忽略这些选项 - 如果两行仅由空格不同,则假装它们是相同的。我需要这个配置选项/标志来处理任何依赖于文件差异的东西 - diff,,blame甚至merge/rebase理想情况下 - 我想git完全忽略尾随空格,特别是行结尾。我怎样才能做到这一点?

答案1

对于 diff,有git diff --ignore-space-at-eol,这应该足够好了。对于 diff 和 Blame,您可以使用-w: git diff -w,忽略所有空白更改git blame -w

对于git applygit rebase,文档提到了--ignore-whitespace

对于合并,看起来您需要使用外部合并工具。你可以使用这个包装脚本(未经测试),favorite-mergetool你最喜欢的在哪里合并工具;跑步git -c mergetool.nocr.cmd=/path/to/wrapper/script merge。合并的结果将是unix格式;如果您喜欢其他格式,请将所有内容转换为该不同格式,或$MERGED在合并后进行转换。

#!/bin/sh
set -e
TEMP=$(mktemp)
tr -d '\013' <"$BASE" >"$TEMP"
mv -f "$TEMP" "$BASE"
TEMP=$(mktemp)
tr -d '\013' <"$LOCAL" >"$TEMP"
mv -f "$TEMP" "$LOCAL"
TEMP=$(mktemp)
tr -d '\013' <"$REMOTE" >"$TEMP"
mv -f "$TEMP" "$REMOTE"
favorite-mergetool "$@"

为了最大程度地减少混合行结尾的麻烦,请确保文本文件是这样声明的

也可以看看git-merge 是否可以忽略行结束差异?在堆栈溢出上。

相关内容