2016-06-10 57 views
0

考慮下面的git日誌。提交按日期排序。然而,有一項承諾顯然比其他承諾早,但仍然排在首位。爲什麼這個舊的git commit會出現在頂部?

commit f9afb9e89918faaff09686ce1df4a36f12e82693 
Author: Kshitiz Sharma 
Date: Fri May 20 11:59:00 2016 +0100 

    Deleted tags 

commit f3b90300799878178c09841ccac7ffcd4c9cc4d9 
Author: Kshitiz.Sharma 
Date: Fri Jun 10 13:00:32 2016 +0000 

    Refactor some code 

    git-svn-id: svn://1.1.1.1/[email protected] ca623f4c-c864-0410-95d3-a40aa24e21c6 

commit c98ad952b84403908ba656ab2f18af9a18a4f95c 
Author: Kshitiz.Sharma 
Date: Wed Jun 8 14:35:29 2016 +0000 

    Handle nullpointer exception 

    git-svn-id: svn://1.1.1.1/[email protected] ca623f4c-c864-0410-95d3-a40aa24e21c6 

這是爲什麼?

回答

2

提交的日期並不指定它們的順序。三種情況下可以創造出過期訂單承諾:

  1. 一個提交可能有假日期爲
  2. 一個提交可以從不同的分支幹,並用merge(通常git log可能已被引入不顯示合併)。
  3. 一個提交可能是由一個rebase(其中移動在提交的圖形提交左右,但離開原來的日期不變)

您所使用git-svn它做了很多的事實,來看搬來搬去我想這是一個數字3的情況。

2

上面的提交沒有被轉發到SVN存儲庫。它只存在於git中。其他提交被髮送到SVN(使用git svn dcommit,由其git-svn-id s證明)。

當你從SVN中抽取最新的更改git svn rebase時,git-svn會重新排列你的提交併將你的本地內容放在(線性)SVN歷史記錄之上。 (也就是說,它實際上是rebases SVN不知道的任何提交。)

重新激活只重新排列歷史記錄。它不會更改提交日期。

相關問題