如何只获取更改的文件名称超过空格?

时间:2014-09-26 00:41:19

标签: git diff

我尝试获取更改的文件名称超过空格。 (换句话说,我不希望列出仅包含空格的文件。)

我试过“git diff --name-only -w”它不起作用。它列出了所有已更改的文件,包括只有空格的文件。

3 个答案:

答案 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`。)