Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
所有新文件和修改文件的Git grep(提交前)_Git_Grep_Diff - Fatal编程技术网

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

所有新文件和修改文件的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 [

我可以在我的Windows Git Bash中运行什么命令来显示文件名、行预览(上下文)和代码中写入的所有“待办事项”的行号,仅限于新文件和修改的文件

不充分的方法1(来自) 这是笨重的,不打印行号:

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
。然后这段代码找到了我的待办事项。