我的项目风格确实要求削减尾随空格,但这会使差异非常混乱。我喜欢在提交实际修复之前将它们合并为一个提交。
这与仅添加非空白更改密切相关,但它正在询问正好相反的内容:
有没有一种方法可以只将空格更改添加到暂存区?
我的项目风格确实要求削减尾随空格,但这会使差异非常混乱。我喜欢在提交实际修复之前将它们合并为一个提交。
这与仅添加非空白更改密切相关,但它正在询问正好相反的内容:
有没有一种方法可以只将空格更改添加到暂存区?
你可以尝试以下“技巧”:
git add -A
git diff --cached -w | git apply --cached -R
这基本上是将所有内容添加到索引中,然后取消暂存影响超过空格的所有更改。
这里是一个对我有效的Bash解决方案
for fname in $(git diff --name-only --diff-filter=ACMR --full-index HEAD)
do
diff=$(git diff -w --ignore-blank-lines --exit-code $fname)
if [ $? -eq 0 ]; then
echo "only whitespace diff on $fname ! adding to git..."
git add $fname
else
echo "diff on $fname!"
fi
done
我不得不结合Tobias和nneonneo的答案来提交具有大型差异的多个文件的空格。确保从您的存储库根目录运行此操作。
git add -A
for FILE_NAME in $(git --no-pager diff --name-only --diff-filter=ACMR --full-index HEAD)
do
git --no-pager diff --cached -w $FILE_NAME | git apply --cached -R
done
git --no-pager
可以防止git使用默认滚动来显示大量内容。
--name-only
参数可以让该命令在多个文件上执行。
-p
作为选项添加到git apply命令中。 - cweiskeerror: unrecognized input
的错误,可能是因为你在 git 配置中设置了颜色。对于我来说,执行git diff --cached -w --color=never | git apply --cached -R
(即禁用差异命令的输出颜色)解决了这个问题。 - danba