我在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 /如何在存儲庫中進行全部提交搜索 –