2017-02-23 126 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 

必要的次数。