2
A
回答
2
首先,你很少有機會通過列出blob來做到這一點。 blob只是原始數據;它不知道它是什麼文件的一部分。真正的答案取決於你想要完成什麼。例如,是否需要搜索提交歷史記錄中無法訪問的提交的一部分的blob?如果你不這樣做,這裏有一些想法。
也許鎬頭搜索git-log
會做你想要什麼:
-S<string>
查找以引進或刪除的<string>
一個實例的差異。請注意,這與簡單出現在diff輸出中的字符串不同。請參閱gitdiffcore(7)中的鎬條目瞭解更多詳情。
根據您的最終目標,這可能比您建議的要好 - 您會看到字符串是如何添加或刪除的。如果您願意,您當然可以使用您獲得的信息來捕捉整個文件。
或者您可能想要列出git-log
的修訂版,並使用它提供的樹(提交)上的git-grep
?
6
這是我得到的SHA和文件名的列表中的一個庫中的所有斑點:
$ git rev-list --objects --all | git cat-file --batch-check='%(objectname) %(objecttype) %(rest)' | grep '^[^ ]* blob' | cut -d" " -f1,3-
注:
格式字符串的
%(rest)
原子追加其餘將對象的SHA之後的輸入行輸出到輸出。在這種情況下,這個休息恰好是路徑名(對於樹和blob對象)。grep
模式旨在僅匹配實際斑點,而不是僅在其路徑名中的某處存在字符串blob
的樹對象。
相關問題
- 1. 如何在git倉庫中查找blob的所有用法
- 2. 如何獲得git倉庫中所有文件的計數?
- 3. 如何從遠程Git倉庫獲取所有文件及其SHA1的列表?
- 4. Git:列出所有源代碼倉庫
- 5. git倉庫裏面的git倉庫,通過go獲得 - 轉換成子倉庫
- 6. 如何獲取倉庫所有克隆上的git標籤?
- 7. 如何搜索Git倉庫中所做的所有更改?
- 8. 如何從遠程git倉庫獲取所有遠程URL?
- 9. 如何獲得git push將推動的所有ref的列表?
- 10. 如何獲得所有倉庫存在的產品?
- 11. 如何將gitignore添加到Git倉庫中的所有分支?
- 12. 如何在Doctrine2/Symfony2的倉庫中獲得外部倉庫?
- 13. 如何獲得飛鏢中所有加載庫的列表?
- 14. 如何獲得正確的GIT遠程倉庫URL
- 15. 快速獲得一個遠程svn倉庫的所有svn:externals的列表
- 16. 如何在Git倉庫中爲所有提交移動目錄?
- 17. git倉庫的遠程列表?
- 18. 列出倉庫中的所有文件?
- 19. 如何檢索一個人的所有github倉庫列表?
- 20. 如何獲得列表中所有密鑰的密鑰列表?
- 21. 如何git克隆所有分支位於根的SVN倉庫?
- 22. 我如何獲得所有Python標準庫模塊的列表
- 23. 如何恢復Git倉庫
- 24. 如何翻轉Git倉庫
- 25. Git倉庫和TFS倉庫
- 26. 如何從第二個git倉庫中刪除克隆的倉庫倉庫?
- 27. 如何從默認的所有遠程倉庫中獲取
- 28. git:從遠程倉庫獲取所有文件
- 29. 清理git倉庫中的二進制blob
- 30. git如何處理git倉庫在另一個倉庫中的位置?
這可能是解決方案git rev-list --all | xargs -l1 git diff-tree -r -c -M -C --no-commit-id | awk'{print $ 3}' – Hugo 2009-10-20 15:55:48
@ Hugo:是的,那會給你一個blob列表。然而,你需要做更多的工作 - 你還需要記住文件名字段,這樣當你「顯示」一個blob時,你就可以將它重新命名爲名稱。你也已經失去了一些重要的信息:blob的一部分是什麼。 – Cascabel 2009-10-20 16:03:58
@Hugo:另一個想法 - 因爲你使用的是差異樹,所以你只能看到修改過的斑點,所以如果你想通過這些修改斑點,你真的接近'git log -S「的功能。 – Cascabel 2009-10-20 16:07:11