我尝试获取更改的文件名称超过空格。 (换句话说,我不希望列出仅包含空格的文件。)
我试过“git diff --name-only -w”它不起作用。它列出了所有已更改的文件,包括只有空格的文件。
答案 0 :(得分:5)
为了解决这个问题,我编写了一个脚本来完成它。希望对其他人有用。
#!/usr/bin/env bash
GIT_REPO_ROOT=`git rev-parse --show-toplevel`
# cd ${GIT_REPO_ROOT}
for f in `git diff --name-only`;
do
MY_DIFF=`git diff -w ${GIT_REPO_ROOT}/${f}`
if [[ ! ${MY_DIFF} == "" ]];
then
echo ${GIT_REPO_ROOT}/${f}
fi
done
此脚本将88个文件('git diff --name-only')的结果减少为8个文件。
答案 1 :(得分:1)
添加ignore-blank-lines选项。尝试
git diff --name-only -w --ignore-blank-lines
答案 2 :(得分:1)
使用此一线:
git diff --name-only -z |
xargs -P`nproc` -0 -n1 bash -c '[[ $(git diff -w "$0") = "" ]] || echo "$0"'
git diff
以获得更快的结果。 (如果结果顺序对您很重要,请删除-P`nproc`
。)