2017-02-23 122 views
1

我做了一些非常奇怪的事情。不知道該怎麼做才知道。不能rebase混帳,合併和Gerrit

我與格里特的工作,它只是給我看,它不能因爲衝突的合併,但有任何衝突,而是我想這是因爲分離HEAD

,我就開始做真正的隨機的事情,首先我cherry-picked 3個提交到一個,而且比我的主分支再次分離,我試圖重訂,卻得到了一個合併衝突,所以最後我得到了以下日誌

http://imgur.com/a/FnJqI

這是因爲我不瞭解它們之間的區別ñmergerebase

能否請你幫我解決歷史(成一條直線),並回答這個問題:

是什麼默認的git mergerebase如果之間的區別使用fast-forward所以結果看起來和rebase完全一樣。而在我的情況下,由於合併衝突,我無法進行rebase。那麼rebase的目的是什麼?

回答

0

Rebasemerge不同,因爲git只有在可以的情況下才使用fast-forward。例如:你從master創建了一個新的分支,你承諾你的新分支,你不承諾到master,然後你想merge你的變化回到主人:git會認爲這是相同的,如果你有無論如何,只是承諾master。如果你在這種情況下使用rebase,它會這樣想。

真正的樂趣開始當你有兩個分支的變化和git不能使用快進:那麼merge將創建一個新的提交了其父母將兩個你的分支的最後一次提交,rebase會嘗試將您嘗試重設的分支基礎移至其他分支的頭部。

因此,要「修理」你的歷史記錄(成一條直線),你需要撤消合併(標記爲頭),你需要你的Rebasing分支變基到您的master分支

git checkout Rebasing 
git rebase master 

你將仍然存在衝突,您需要解決並繼續使用

git rebase --continue 

必要的次數。