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)
在我的 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)