簡體   English   中英

git log只返回對master分支的提交?

[英]git log to return only the commits made to the master branch?

我做了一些搜索,發現:

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中沒有明確定義。 如果我在master上進行提交,然后創建一個指向同一提交的新分支(例如使用git branch newbranch ),那么除了名稱之外,該分支與master分支完全相同。 所以每一個“在分支大師 身上制造 ”的財產現在也意味着“在分支新分支上制造” 因此,您不能在Git中擁有此屬性。

即使是parkydr的解決方案,它顯示了僅在合並的一側進行的所有提交,也不是一個防故障解決方案。 理想情況下,它會隱藏在單獨的非主分支上進行的所有提交,然后將這些提交合並回主服務器。 因此,您只能獲得直接對主線進行的提交,或者在其他一些提交中進行合並提交的提交。 但是有兩件事會妨礙它的運作:

  1. 快進合並:當你從master分支並創建一些提交時,直接在master上創建沒有新的提交,那么git merge somebranch上的git merge somebranch將快進提交,導致master分支指向同一個提交somebranch 因此,您“丟失”這些提交最初在單獨分支上創建的信息。 您可以強制Git始終使用git merge --no-ff創建合並提交,但這對后來無濟於事。
  2. 無法保證合並順序:當您使用master並合並分支時,之前的主提交將始終是第一個父提交。 所以你會得到你想要的行為。 然而,完全有可能在所述分支上,而是合並master,導致主提交是第二個父。 然后可以將master快速轉發(或重置)到新提交,從而產生“反轉”視圖。

所以,最重要的是,你無法安全地獲得這樣的歷史。 你最好習慣Git靈活的分支模型是如何工作的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM