2016-06-11 89 views
0

我辦「混帳日誌--graph --oneline --branches = * --date訂購」有兩個分支,3個共用提交一個Git倉庫我能得到這樣的:如何讓git日誌在同一行顯示櫻桃挑選的提交?

* hash9 comment6 
* hash8 comment5 
* hash7 comment4 
| * hash6 comment6 
| * hash5 comment5 
| * hash4 comment4 
| * hash3 comment3 
|/ 
* hash2 comment2 
* hash1 comment1 

是否有可能取而代之呢?:

* * hash9 hash6 comment6 
* * hash8 hash5 comment5 
* * hash7 hash4 comment4 
| * hash3 comment3 
|/ 
* hash2 comment2 
* hash1 comment1 
+2

我不這麼認爲是因爲不同的提交對象被創建時,櫻桃採摘導致不同的哈希。即使提交消息是相同的,提交對象不是。 – rbento

+0

是的,他們有不同的哈希值,但git知道他們是相同的提交,有可能得到哪些提交在兩個分支上,如branch1..branch2作爲參數。我現在打電話了,所以我不能舉一個例子,但可以用兩個不同的git日誌來手動完成我想要的任務。問題是,可以一步完成? – JotaGe

+0

這不完全是你想要的答案。 'git cherry '可以列出所有的,但不是,在+或 - 之後。 - 表示在中有相當的提交,最有可能是櫻桃採摘。 – ElpieKay

回答

1

你將不得不編寫自己的圖形繪圖程序。 git log中的圖形繪製代碼不是這個聰明的。

您的圖形繪製程序可能需要git cherry或(可能更好)其較低級表親git patch-id

由您決定是否比較提交消息。如果你這樣做,是否提交a123456提交b987654的副本,如果消息不同?如果差異是其中一個是(cherry picked from commit ...)而另一個不是?此字符串中的ID可能與任一提交不匹配(如果兩者都是來自第三次提交的摘錄)(一個採用-x,另一個採用-x);那麼第三次提交可能不再位於您正在繪製的圖的部分中,或者甚至在存儲庫中,如果它已經老化並且被垃圾收集(例如由於變形)。

如果從分支的頂端A,你覺得這是什麼提交順序:

* a555555 last commit 
* a444444 fourth commit 
* a333333 third commit 
* a222222 second commit 
* a111111 first commit 
* a000000 common base 

和分支的頂端B你覺得這個順序:

* xxxxxxx second commit 
* xxxxxxx last commit 
* xxxxxxx fourth commit 
* xxxxxxx third commit 
* xxxxxxx first commit 
* a000000 common base 

您將如何展現這種情況下?當我從一個分支開始一些實驗性工作時,我製作了很多這樣的鏈,然後製作一個新版本,並在重做特定提交之前將其更改爲更明智的順序。

+0

「提交a123456提交b987654的副本,如果消息不同?」我在考慮通過做「git cherry-pick」git將存儲兩個提交之間的鏈接,但看起來不是這種情況。關於無序的提交,我的想法是把它們全部顯示在第一個對應的行上。但似乎你是對的,我將不得不寫我自己的工具,如果我想這樣:) – JotaGe

+0

是的,正如你所見,櫻桃挑選不連接提交。這是「daggy fix」方法背後的原因(參見http://wiki.monotone.ca/DaggyFixes/):如果您可以修復接近其原點的錯誤,您可以*將該修復合併到任何具有需要修復的bug,併合並* do *鏈接提交。 (雖然git的合併日誌通常更加混亂,所以這對顯示問題沒有幫助:-)) – torek