所有新文件和修改文件的Git grep(提交前)
我可以在我的Windows Git Bash中运行什么命令来显示文件名、行预览(上下文)和代码中写入的所有“待办事项”的行号,仅限于新文件和修改的文件 不充分的方法1(来自) 这是笨重的,不打印行号:所有新文件和修改文件的Git grep(提交前),git,grep,diff,Git,Grep,Diff,我可以在我的Windows Git Bash中运行什么命令来显示文件名、行预览(上下文)和代码中写入的所有“待办事项”的行号,仅限于新文件和修改的文件 不充分的方法1(来自) 这是笨重的,不打印行号: function __greptodo { QUERY="TODO" for FILE in `git diff --name-only`; do grep "$QUERY" $FILE 2>&1 >/dev/null if [
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(来自)
这会更好(显示上下文并包括新文件和修改的文件),但仍然不会打印行号:
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)
谢谢这越来越近了。但是,这似乎适用于“要提交的更改”或“不准备提交的更改”而不是“未跟踪的文件”的文件。如果我首先运行
git add*
,您的命令就会挂起。我想你也需要新的文件。请参见上面的我的编辑,但是您需要--其他
和--排除git ls文件的标准
标志。谢谢!我发现添加-I
会使它不区分大小写:我刚刚注意到一个奇怪的、罕见的情况:我在一个文件中弹出了一个冲突的隐藏,然后我解决了冲突(在Netbeans中,并将其标记为已解决),然后当我运行这个时,我的TODO没有出现。因此,我再次保存了一个存储,这次我没有弹出它,而是使用了apply
。然后这段代码找到了我的待办事项。