在git的临时区域中的所有文件中搜索字符串,所有这些文件都已更改但未暂存

时间:2014-04-09 18:15:59

标签: git

我正在尝试在我的所有本地更改的文件中搜索字符串(例如,搜索字符串“TODO”)。这包括已经暂存的文件和已更改但尚未添加到暂存区域的文件。

3 个答案:

答案 0 :(得分:2)

回答我自己的问题。我能够使用以下命令

git diff --name-only | xargs grep 'My search string goes here'

答案 1 :(得分:0)

这是一个bash片段,可以在Debian上完成此任务:

for file in `git status -s -uno`
        do
                if [[ ! $file =~ [A-Z] ]]; then
                        echo "$file"
                        grep -n "TODO" $file
                fi
        done

说明:

git status -s -uno是git状态的缩写形式,但不包括未跟踪的文件。

for循环中的if条件跳过git status -s的状态部分,以避免搜索不存在的文件。

最后-n选项ot grep打印行号。只需将TODO更改为您想要找到的任何内容。

我想它也应该在windows中使用git-bash ......

答案 2 :(得分:0)

正确答案是

git diff-index -S{STRINGTOSEARCH} -u HEAD

新添加的文件必须通过

添加到暂存

git add path/to/filename

仅在添加/删除的字符串中搜索有意的字符串。