如何仅在我已提交的文件中执行'git grep'?
有没有办法让git grep只匹配我提交的文件 其目的是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" 或更简短的
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, ®match, 0);
...
- hit = !regexec(regexp, mf2.ptr, 1, ®match, 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, ®match, 0);
...
- hit = !regexec(regexp, mf2.ptr, 1, ®match, 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=很好。