Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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_Search_Grep - Fatal编程技术网

如何仅在我已提交的文件中执行'git grep'?

如何仅在我已提交的文件中执行'git grep'?,git,search,grep,Git,Search,Grep,有没有办法让git grep只匹配我提交的文件 其目的是grep文件的内容,而不是日志消息 author="your name" git log --pretty="%H" --author="$author" | while read commit_hash; do git show --oneline --name-only $commit_hash | tail -n+2; done | sort | uniq |xargs grep -i "String to grep" 或更简短的

有没有办法让git grep只匹配我提交的文件

其目的是grep文件的内容,而不是日志消息

author="your name"

git log --pretty="%H" --author="$author" | while read commit_hash; do git show --oneline --name-only $commit_hash | tail -n+2; done | sort | uniq |xargs grep -i "String to grep"
或更简短的版本:

author="your name"
git log --no-merges --author="$author" --name-only --pretty=format:"" | sort -u |xargs grep -i <string>
author=“你的名字”
git日志--无合并--author=“$author”--仅限姓名--pretty=format:“| sort-u | xargs grep-i”
用于从特定用户获取文件

或更简短的版本:

author="your name"
git log --no-merges --author="$author" --name-only --pretty=format:"" | sort -u |xargs grep -i <string>
author=“你的名字”
git日志--无合并--author=“$author”--仅限姓名--pretty=format:“| sort-u | xargs grep-i”

用于从特定用户获取文件

如果您想在提交的差异中进行grep,您可能应该使用
git log-G
git log-S

git log -p --author="your name" -G pattern

-G
-S
都将在提交引入的差异中查找模式,
区别在于(
git帮助日志
):

来说明<代码> -S——PopAxE ReXEX < /> >和<代码> -G/<代码>,请考虑在以下情况中使用以下差异 同一文件:

+    return !regexec(regexp, two->ptr, 1, &regmatch, 0);
...
-    hit = !regexec(regexp, mf2.ptr, 1, &regmatch, 0);
虽然
git log-G“regexec\(regexp)
将显示此提交,但
git log-S“regexec\(regexp)--pickaxe regex
不会显示此提交(因为 该字符串的出现次数未更改)


当将
-p
-G
-S
结合使用时,只会显示与模式匹配的文件。

如果您想在提交的差异中进行grep,您可能应该使用
git log-G
git log-S

git log -p --author="your name" -G pattern

-G
-S
都将在提交引入的差异中查找模式,
区别在于(
git帮助日志
):

来说明<代码> -S——PopAxE ReXEX < /> >和<代码> -G/<代码>,请考虑在以下情况中使用以下差异 同一文件:

+    return !regexec(regexp, two->ptr, 1, &regmatch, 0);
...
-    hit = !regexec(regexp, mf2.ptr, 1, &regmatch, 0);
虽然
git log-G“regexec\(regexp)
将显示此提交,但
git log-S“regexec\(regexp)--pickaxe regex
不会显示此提交(因为 该字符串的出现次数未更改)


当将
-p
-G
-S
结合使用时,只会显示与模式匹配的文件。

目的是对文件内容进行grep,而不是日志消息。我已经更新了问题以澄清这一点。@Equidev这确实会根据作者提交的文件内容进行grep。\not日志。目的是grep文件的内容,而不是日志消息。我已更新问题以澄清这一点。@Equidev这确实将grep文件的内容由作者提交,而不是日志。目的是grep文件的内容,而不是日志消息。我已更新问题以澄清这一点。@EquidevipDev:
-G
-s
正是这样做的:他们在提交的内容中,而不是在它的消息中grep。谢谢,我不知道-G和-s;仍在学习Git:-)很高兴git命令可以通过选项实现这一点,而不必添加管道,因为它也可以在Windows上运行。目的是grep文件的内容,而不是日志消息。我更新了问题以澄清这一点。@Equidev:这正是
-G
-s
所做的:它们grep文件的内容commit,不在其消息中谢谢,我不知道-G和-S;仍在学习Git:-)很好,Git命令可以通过选项实现这一点,而不必添加管道,因为它也可以在Windows上工作。定义“我已提交的文件”:其他人从未修改过的文件?由您的某个提交随时修改的文件?最后一次提交是由您进行的文件?其他内容?git log的条件--committer=很好。定义“我已提交的文件”:其他人从未修改过的文件?由您的某个提交随时修改的文件?最后一次提交是由您进行的文件?其他内容?git log的条件--committer=很好。