在git';s暂存区域和所有已更改但未暂存的文件
我试图在本地更改的所有文件中搜索字符串(例如,搜索字符串“TODO”)。其中包括已暂存的文件和已更改但尚未添加到暂存区域的文件。下面是一个在Debian上运行的bash代码段,可以实现这一点:在git';s暂存区域和所有已更改但未暂存的文件,git,Git,我试图在本地更改的所有文件中搜索字符串(例如,搜索字符串“TODO”)。其中包括已暂存的文件和已更改但尚未添加到暂存区域的文件。下面是一个在Debian上运行的bash代码段,可以实现这一点: for file in `git status -s -uno` do if [[ ! $file =~ [A-Z] ]]; then echo "$file"
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 status的缩写形式,但不包括未跟踪的文件
for循环中的if条件跳过git status-s的status部分,以避免搜索不存在的文件
最后,grep的-n选项打印行号。只需将TODO更改为您想要查找的任何内容
我想它也应该在windows中的git bash上工作…回答我自己的问题。我可以用下面的命令来做
git diff --name-only | xargs grep 'My search string goes here'
正确的答案是
git diff index-S{STRINGTOSEARCH}-u HEAD
新添加的文件必须通过
git添加路径/to/filename
仅在添加/删除的字符串中搜索所需字符串。使用for循环将git状态的结果导入grep?
git grep TODO
?(请注意,这从工作目录开始,添加-->://
以从存储库顶部开始。)但这也会查看未修改的文件。是的,但git grep也会搜索当前工作目录中未更改的文件。这不会找到暂存的更改,对吗?对于您想要的暂存和未暂存更改git diff HEAD
这将显示已更改的文件并在该文件中搜索字符串,但如何仅搜索更改、添加和删除的字符串git diff index--cached-S{STRINGTOSEARCH}-u HEAD
它至少需要通过git add path/to添加到git的文件