我已經做了一些搜索,發現:git log僅返回對主分支進行的提交?
git log myBranchName
一個可能的解決方案。但是當我的分支是主分支時會發生什麼?當我運行時:
git log master
它似乎返回所有提交到任何分支。根據我讀過的內容,它列出了與主分支相關的所有提交。瞭解這一點,我如何才能調用主分支的提交歷史記錄?
我已經做了一些搜索,發現:git log僅返回對主分支進行的提交?
git log myBranchName
一個可能的解決方案。但是當我的分支是主分支時會發生什麼?當我運行時:
git log master
它似乎返回所有提交到任何分支。根據我讀過的內容,它列出了與主分支相關的所有提交。瞭解這一點,我如何才能調用主分支的提交歷史記錄?
我覺得這是你想要
git log --first-parent master
引述手動
按照只有第一父提交見狀合併提交什麼。這個 選項可以在查看特定主題分支的演變時給出更好的概述,因爲合併到主題分支往往只有 關於調整上游時不時更新,而這個 選項允許您忽略個人通過這種合併提交到您的 歷史記錄。
由於Git的分支模型,提交不屬於一個或多個分支。分支是指向整個提交圖中單個提交對象的指針。所以當你說X中的一個提交是「在分支X上」的時候,你通常意味着它在分支X指向的提交開始時是可訪問的。
對於git log
,默認行爲是等於git log HEAD
其中HEAD是指提交當前分支目前指着。因此,如果您在主分支上,它等於git log master
,顯示從最近的提交開始時可以訪問的所有提交。
不幸的是,你提到的作爲對某個分支的提交在Git中沒有明確定義。如果我在主服務器上進行提交,然後創建一個指向相同提交的新分支(例如使用git branch newbranch
),那麼除了名稱之外,該分支字面上與主分支相同。因此,每個屬性「在分支主人」「現在也意味着」在分支新分支「。因此你不能在Git中擁有這個屬性。
即使parkydr的解決方案,它顯示所有僅在合併的一側進行的提交,並不是一個失敗的解決方案。理想情況下,它會隱藏所有那些在獨立的非主分支上進行的提交,然後合併回主。因此,您只會直接向主線提交提交或在其他提交中合併提交合並的提交。但是有兩件事情,這將阻止這樣做:
git merge somebranch
將快 - 提交提交,導致主分支指向與some branch相同的提交。因此,您「失去」那些提交最初在獨立分支上創建的信息。儘管如此,你可以強制Git始終創建合併提交,使用git merge --no-ff
,但這對你以後不會有所幫助。所以,底線是,你不能安全地得到這樣的歷史。你最好習慣Git靈活的分支模型的工作原理。
'--first-parent master'對於我正在處理的問題非常有用:確定哪些合併(--merges)進入了master,vs合併到主題分支上。 – 2013-09-20 20:31:36
謝謝。我認爲我應該以解決這個問題的方式進行市場營銷。 – 2014-11-19 18:07:25
只是單挑,它並不完美。如果之前對'master'的提交碰巧被列爲提交的_second_父項,這會給你一個錯誤的提示。但是,如果您遵循GitHub的pull請求/合併流程,通常不會發生這種情況。 – PJSCopeland 2017-08-17 21:36:14