簡體   English   中英

從 git 歷史記錄中確定父分支/提交

[英]Determine parent branch/commit from git history

我在 git 中有以下歷史記錄:

* 02e085a (master) readme update
| * 1d940da (HEAD -> b1) search.py
| | * 7aaa12d (b2) file2
| |/
| * 7be9db9 file1
|/
* 22601c0 initial commit

現在我在 b2 上,我想明白 b2 分支的地方(7be9db9)。 算法如下:

  1. 獲得下一次提交
  2. 檢查提交所屬的分支
  3. 如果只有當前分支,則繼續 1. step else 4.step
  4. 提交屬於多個分支,這一定是我們分支的點

但是,如果我想對 b1 做同樣的事情,我最終會得到相同的 position - 7be9db9。 但我預計最終會在 22601c0,因為這是 b1 分支的點。 歷史就是這樣創造的。

來自 master (b1) 的初始提交分支和提交來自 b1 (b2) 的 file1 分支和提交 file2 checkout b1 並提交 search.py

恐怕git的設計方式,無法區分commit 7be9db9(file1)是b1還是b2創建的,對嗎? 所以不能說b1的父母是master還是b2?

感謝您的確認。

恐怕git的設計方式,無法區分commit 7be9db9(file1)是b1還是b2創建的,對嗎? 所以不能說b1的父母是master還是b2?

正確,不可能知道 b1 是從 b2 分支出來的,還是 b2 從 b1 分支出來的。 當 b2 從 b1 分支時,它們指向同一個提交並且在拓撲上是相同的。 不存儲參考歷史。

如果您的流程需要知道這一點,而我正在努力思考為什么,請選擇另一個流程。

您可以知道的是兩個分支之間的通用合並基礎git-merge-base 通常這是您想要的信息。 例如,一個 Github 拉取請求知道您要合並到哪個分支,並且它可以獲得所有要與base..branch合並的提交。

暫無
暫無

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

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