我在git仓库中有一段比我当前分支更多的代码,而且我不确定哪个提交以及哪个分支。我如何搜索我迄今为止提交的所有文件中的特定字符串(然后显示该行代码的周围)?Git-Repo在所有提交的文件中搜索字符串(未知分支和提交)
回答
使用git grep
定位提交:
git grep "string" $(git rev-list --all)
的git rev-list --all
使得搜索项目的整个历史。
这将会给像这样的输出:
<commit>:<path>:<matched line>
然后你可以使用git branch --contains
找出提交哪个分支是:
git branch --contains <commit>
我可以指定仅搜索一个文件/路径吗? (例如,我正在寻找一个特定的灯具,只想搜索这个路径) –
是:'git grep“字符串”$(git rev-list --all) - path'。 – jszakmeister
这对大历史无效:( 'git grep'abc'echo $(git rev-list --all)' 'zsh:参数列表太长:git' – tback
用git branch "branch-name"
更改分支,然后在存储库根目录中执行git grep "specific string"
。如果你没有太多的分支,这应该让你快速到达。
如果上述git grep "string"
变化给你“列表太长“的错误,你可以用git log -S
代替。 -S选项搜索已提交的文件的内容:(更多在“临Git的”书下"searching")
git log -Sstring # look for string in every file of every commit
git log -Sstring -- path/to/file # only look at the history of the named file
- 1. 搜索提交文件内容的Git远程分支提交?
- 2. 搜索在文件中首次引入字符串(包括提交已删除分支)的提交
- 3. git搜索提交更改的字符串和列表文件与该提交中的字符串
- 4. 在某个提交后删除分支中的所有提交
- 5. 在github的主分支以外的分支上搜索提交
- 6. 在所有分支中搜索字符串,但限制提交给特定作者?
- 7. 在git中查找所有未提交的提交?
- 8. Git更改没有提交提交和未跟踪文件
- 9. 在提交之前将提交提交到新分支
- 10. 所有由我在所有的分支里所做提交
- 11. 如何搜索特定文件名的所有提交?
- 12. 切换分支以及移动已提交但未提交的提交
- 13. svn分支提交 - 实验提交
- 14. Subversion将未提交的更改提交到一个新分支
- 15. Git - 从以前的提交和拆分提交历史分支
- 16. 如何在git分支中搜索一次提交的文件名?
- 17. 未能在主分支提交
- 18. 显示所有提交A的分支并且提交B不在?
- 19. 删除分支后未分级提交
- 20. 提交搜索表单也有在PHP(和JS)查询字符串
- 21. 提交代码在Git中,分支在源头提交一次提交
- 22. 使用Eclipse/Mercurial时提交期间列出的所有未提交的文件
- 23. JGit检索提交ID的分支
- 24. 的JavaScript提交未提交
- 25. Git - 如何返回上次提交并删除所有未提交的文件?
- 26. zsh - 显示git分支是否有提交过的提交
- 27. 未提交事件提交事件提交事件
- 28. SVN提交从分支到分支的所有未合并版本
- 29. 在GIT的特定分支中查找所有提交
- 30. 从所有提交中删除文件
可能重复:http://stackoverflow.com/questions/ 746684 /如何在存储库中进行全部提交搜索 –