我想了解git log --all --grep=<>
和git log --grep=<>
之間的區別。我的目標是在搜索時遍歷整個回購。如果我不添加--all
,這是否意味着我會錯過分支機構中的所有提交消息?對我來說看起來像一個非直觀的默認值。在整個git repo中搜索提交消息
回答
你是對的,你需要--all
在這裏(或者你可能想要--branches
來代替)。
「直覺」在Git是一個有點棘手,以及git log
行爲是直觀的給我,但僅僅是因爲我研究的git以及如何與犯圖表工作以其特有的概念。
log
命令與所有其他提交圖遍歷命令並沒有太大區別。它們的工作方式都與 - 實際上很多都是簡單的運行,或者運行,然後使用輸出-git rev-list
。您可以給它一些起點提交ID或某些名稱或gitrevisions
中描述的任何語法,並且它會從這些ID中找到可達到的每個提交的SHA-1 ID。
每承諾,因爲衍合複製操作已經「拋棄」(但仍通過reflogs容易找到),回購協議,包括提交內部,承諾是藏匿棧上,甚至git notes
提交,作品這方式,所以git log
找不到所有提交。即使是--all
標誌也不會實際找到所有提交。
如果你仔細閱讀the git rev-list
documentation,你會看到--all
指(因此各分公司,所有的標籤和註釋「在refs/
每個命名空間參考」,但像ORIG_HEAD
沒有特別引用衍合後留下的,也沒有任何引用日誌條目),例如)。同樣的措詞出現在the git log
documentation中,但我喜歡將人們推薦給git rev-list
,因爲我認爲它最終更具啓發性。
git log
是一個遍歷提交圖並打印出提交信息的工具。 --grep
是在此遍歷上的過濾器。從當前
git log
開始提交(即HEAD
),並通過歷史從那裏工作了歸途。
git log --all
訪問所有提交。這是非常罕見的,偶爾需要集成商。
--grep
是一個過濾器。它過濾了由git log
訪問的提交流。僅限過濾器刪除條目,絕不添加。對於每次提交git log
訪問--grep
決定是否應該包括。如果你把它想象成一個普通的Unix管道,它可能會更有意義。
git log | grep foo
默認值應該工作最好與最常見的情況。諸如diff
和log
之類的命令最常用於開發。整合發生得非常少。所以默認值是針對開發人員的。
git log
對開發人員的常見用途是尋找對此提交作出貢獻的更改。他們正在尋找「爲什麼這是這樣寫的?」這個問題的答案。或者「這個bug從哪裏來的?」。這就是爲什麼默認設置是從當前提交中走過圖。很少有人想要搜索尚未合併到代碼中的提交,這更像是集成管理器的任務。
--grep
不會更改提交git log
訪問的內容。如果暗示--all
,那將是令人驚訝和不靈活的。令人驚訝的是,它會混淆「過濾器」的含義,而且你很少想搜索不相關的分支。不靈活,因爲你如何只搜索某些提交?我想你可能需要一個--no-all
來關閉它,然後可能有更多的開關,可能是--branches
,以獲得你的意思。
有少數情況下有多個默認行爲,但它通常是一場噩夢。最好有一個牢固的常見用例(開發),而不要猜測更少的情況(集成)。讓罕見的情況明確他們想要什麼。
- 1. 通過提交消息搜索Gerrit
- 2. 在git中搜索簽入消息
- 3. 在git中提交消息前綴
- 4. git提交模板消息
- 5. 在git中輸出給定提交的提交消息
- 6. 在git中修改過去提交的提交消息
- 7. GIT中從主合併提交消息
- 8. VSCode中的多行git提交消息
- 9. git:中止提交輸入消息
- 10. 如何在BitBucket中搜索提交消息
- 11. Git-Repo在所有提交的文件中搜索字符串(未知分支和提交)
- 12. Git提交一個提交消息,沒有別的?
- 13. 從Git中檢索提交消息日誌使用JGit
- 14. git是否提交整個提交行?
- 15. 如何在git中取消整個提交歷史記錄?
- 16. 如何doyou在git中修改最後一個提交消息?
- 17. 在git中修改第一個提交消息?
- 18. git gui - 在哪個文件中存儲了[tmp]提交消息?
- 19. git突出顯示提交消息
- 20. Git:合併衝突並提交消息
- 21. 搜索完整的git commit消息正文
- 22. worflow git:重新整理提交信息
- 23. 添加svn提交到git repo
- 24. 爲什麼git提示我提交後合併提交消息?
- 25. 拒絕與之前提交的消息相同的消息提交git commit?
- 26. 如何搜索本地提交GIT
- 27. Git(assembla) - 提交提交消息中引用前一個變更集的語法
- 28. 如何引用git commit提交消息中的前一個提交
- 29. 將提交消息自動追加到在Git中提交的文件中
- 30. 參考消息提交
請糾正我,如果我錯了,但它排除合併分支機構?你可以更具體地說明哪些節點根據來自某個提交的git「可達」? – m33lky
「Reachability」是一個圖論法術語,但這個想法很簡單:給定一個開始提交(默認是'HEAD'),圖形漫步者訪問該提交,然後是它的父提交,然後是該提交的父對象,等等上。合併提交只是兩個(或更多)父母的提交,此時圖形漫步者必須訪問這兩個(及其所有父母)。例如參見http://think-like-a-git.net/sections/graph-theory/reachability.html和http://tex.stackexchange.com/a/156501;在後者中,c589395是合併,所以步行者必須訪問9f9c652和b3bd158。 – torek