Git grep 遍历所有新的和修改过的文件(提交前)

Git grep across all new and modified files (before commit)

在我的 Windows Git Bash 中,我 运行 可以使用什么命令显示所有文件的文件名、行预览(上下文)和行号在我的代码中写入 "TODO" 的地方,仅限于 new 文件和 modified files?

方法 1 不充分(来自 here

这很笨拙,不打印行号:

function __greptodo {
    QUERY="TODO"
    for FILE in `git diff --name-only`; do
        grep "$QUERY" $FILE 2>&1 >/dev/null
        if [ $? -eq 0 ]; then
            echo '———————————————'
            echo $FILE 'contains' $QUERY
            grep "$QUERY" $FILE 2>&1
        fi
    done
}
alias greptodo=__greptodo

方法 2 不充分(来自 here

这好多了(显示上下文并包括新文件和修改的文件)但仍然不打印行号:

grep -s "TODO" $(git ls-files -m)

-n 标志告诉 grep 显示行号,所以你很接近。尝试:

grep -sn "TODO" $(git ls-files -m)

要包含未跟踪的文件,请使用 --others (-o) 标志,并使用 --exclude-standard 标志排除通常被 Git 忽略的文件:

grep -sn "TODO" $(git ls-files -mo --exclude-standard)