跨所有新文件和修改过的文件进行Git grep(在提交之前)

时间:2018-10-02 22:30:05

标签: git grep diff

我可以在Windows Git Bash中运行什么命令,该命令将向我显示代码中写有“ TODO”的所有位置的文件名,行预览(上下文)和行号,仅限于新的文件和修改的文件?

方法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)

1 个答案:

答案 0 :(得分:1)

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

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

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

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