2016-08-16 75 views
0

所以我從master分叉了一個分支,可以說feature。之後兩個分支都加入了不同的提交。截至目前,feature目前有1537次提交,而master有1515次提交。承諾數減少後重新分配功能分支主

爲了得到一些更新,我在重訂過featuremaster,等等featuregit rebase -i master後,提交的數目減少到1532(feature分支)。

我無法想象這種情況是可能的。在分叉的時候說,兩個都有x提交,後來,y提交被添加到master,而z提交被添加到feature。所以masterx+y提交和featurex+z提交。 如果feature已經重新發布,那麼它應該有x+y+z提交,並且至少不小於x+z。我錯過了什麼?

回答

3

工作衍合是這樣的:

foreach (commit) { 
    calculate diff 
    apply diff 
    git add 
    git commit 
} 

如果有關於featuremaster公司之間的任何重疊,那麼很有可能,許多這些減少空提交。因此Git忽略了他們。

如果您使用--keep-empty標誌調用rebase,則應保留這些空的提交。

+0

哦,所以git可以識別歷史中類似的提交併刪除後面的提交? – goelakash

+0

@goelakash - 這不是它承認相同的提交。相反,rebase包括從'feature'逐個提交每個提交,然後在'master'之上重放它並提交結果。有時候這會導致一個空的提交,Git默認會忽略它。 –

+0

好吧,我現在明白了。非常感謝! :d – goelakash