有兩個提交SHA1,我怎麼得到哪個先去了手動分析git日誌?如何找出哪個提交先行?
請注意,我沒有試圖找出哪一個是另一個的祖先,我想知道哪一個先被推。
我想通過它在git歷史中的時間順序來獲取它,而不是通過提交日期。任何方法都是受歡迎的,但首選的是直接的方式(我直接在終端仿真器上使用它,而不是腳本)。
我嘗試使用git merge-base
作爲@wRAR建議。
首先,有一個缺點:git merge-base --is-ancestor
不給我輸出。它以0或1退出,而不輸出任何內容到標準輸出。它可以當腳本,但當手動直接在我的終端上使用它,我必須在一個額外的步驟後檢查退出狀態(echo $?
在bash上,$LASTEXITCODE
在PowerShell上)。不是一個交易破壞者,但會產生一點麻煩。
但是,無論如何,它沒有工作。
工程在以下情形:
> git log --oneline --graph
| * <SHA1 D> Fourth commit.
| * <SHA1 C> Third commit.
| * <SHA1 B> Second commit.
| * <SHA1 A> First commit.
> git merge-base --is-ancestor <SHA1 B> <SHA1 C>
> echo $?
0
> git merge-base --is-ancestor <SHA1 C> <SHA1 B>
> echo $?
1
但不是在這一個(沒有做什麼,我打算):
> git log --oneline --graph
* <SHA1 D> Merged work.
|\
| * <SHA1 C> Paul's first commit.
* | <SHA1 B> John's second commit.
|/
* <SHA1 A> John's first commit.
> git merge-base --is-ancestor <SHA1 B> <SHA1 C>
> echo $?
1
> git merge-base --is-ancestor <SHA1 C> <SHA1 B>
1
它按預期工作:任何提交都不是另一個的祖先。 – wRAR 2013-04-04 15:34:09
如果您想使用除自然提交DAG之外的其他內容來建立提交順序,請澄清一下。 – wRAR 2013-04-04 15:37:33
@wRAR添加了一個說明,說明我的意圖。 – talles 2013-04-04 15:50:40