如何查找 Git 分支中所有仅修改空格的提交?我不关心合并提交。
更一般地说,基于差异方面查找 Git 提交的最佳方法是什么?我知道 git log -S
,但这仅适用于非常简单的情况(当您想在差异中查找文本时)。
如何查找 Git 分支中所有仅修改空格的提交?我不关心合并提交。
更一般地说,基于差异方面查找 Git 提交的最佳方法是什么?我知道 git log -S
,但这仅适用于非常简单的情况(当您想在差异中查找文本时)。
应该做类似这样的事情
branch=<branch you wish to check>
for commit in $(git rev-list --no-merges $branch); do
if [ -z "$(git diff -b $commit^..$commit)" ]; then
echo "$commit only modifies whitespace."
fi
done
git log -G<正则表达式>
可用于搜索包含与正则表达式匹配的行的提交的差异。
请注意,这与说 git log -S<正则表达式> --pickaxe-regex
不同,因为它只会显示其差异更改了匹配字符串出现次数的提交。换句话说,匹配字符串必须出现在给定文件中的添加或删除行中的一个,但不能同时出现在两者中间。
在您的情况下,您可以执行类似以下操作:
git log -G"^\s+$" --no-merges
^\s+$
匹配差异中任何只包含空格的行。
缺点是这也会包括提交的差异中除了只有空格的行之外的其他行。
git rev-list
中添加--no-merges
以不显示合并提交。 - asmeurergit diff
的输出导入到head -n 1
中,这样它就不会尝试计算完整的差异。这可能会稍微加快速度。 - nneonneogit diff-tree --quiet --ignore-space-change $commit
作为if
条件来进行实验。这种方法要快得多,但是由于某些原因似乎会给出错误的结果。 - sschuberth