我的项目的风格确实说要修剪尾随空格,但这会使差异非常非常混乱。在提交实际修复之前,我喜欢将它们合并为一个提交。
这与Add only non-whitespace changes密切相关,但问的恰恰相反:
有没有办法只将空白更改添加到暂存区域?
答案 0 :(得分:25)
您可以尝试以下“技巧”:
git add -A
git diff --cached -w | git apply --cached -R
这基本上将所有内容添加到索引中,然后取消所有影响超过空白的更改。
答案 1 :(得分:3)
这是一个适合我的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
答案 2 :(得分:1)
我必须结合并修改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
循环允许该命令处理多个文件。