Git 如何仅获取更改多于空白的文件名?
我尝试获取文件名,这些文件的更改不仅仅是空白。(换句话说,我不希望只列出更改了空格的文件。)Git 如何仅获取更改多于空白的文件名?,git,diff,Git,Diff,我尝试获取文件名,这些文件的更改不仅仅是空白。(换句话说,我不希望只列出更改了空格的文件。) 我试过“git diff--name only-w”它不起作用。它列出所有已更改的文件,包括仅包含空格的文件。添加忽略空行选项。试一试 git diff --name-only -w --ignore-blank-lines 为了解决这个问题,我写了一个脚本。希望对其他人有用 #!/usr/bin/env bash GIT_REPO_ROOT=`git rev-parse --show-toplev
我试过“git diff--name only-w”它不起作用。它列出所有已更改的文件,包括仅包含空格的文件。添加忽略空行选项。试一试
git diff --name-only -w --ignore-blank-lines
为了解决这个问题,我写了一个脚本。希望对其他人有用
#!/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个文件。使用以下一行代码:
git diff --name-only -z |
xargs -P`nproc` -0 -n1 bash -c '[[ $(git diff -w "$0") = "" ]] || echo "$0"'
- 安全地处理带有空格或特殊字符的名称
- 并行调用
,以获得更快的结果。(如果结果顺序对您很重要,请删除git diff
。)-P`nproc`
for
通常会在diff中的每个空格分隔的单词上迭代,而不是每行。您可以通过将IFS
设置为换行符来解决这个问题,或者在read-rf时使用git diff--name only;做已完成
而不是for完全符合我的要求。多谢了,这是一个潜在的单程航班。|
使continue之后的命令变成同一个命令,只是我这样说是为了让它更可读,但它仍然只是一个命令。