无法变基 git、合并和 Gerrit

Cannot rebase git, merge and Gerrit

我做了一件很奇怪的事。我不知道该怎么办。

我正在使用 Gerrit,它只是告诉我它因为冲突而无法合并,但没有冲突,但我猜是因为分离 HEAD

然后我开始做一些非常随机的事情,首先我 cherry-picked 3 提交到一个,然后我再次分离了 master 分支,我试图变基,但遇到了合并冲突,所以最后我得到以下日志

http://imgur.com/a/FnJqI

这是因为我不明白mergerebase

之间的区别

你能帮我修复历史(成一条直线)并回答问题吗:

如果默认情况下 git 使用 fast-forwardmergerebase 有什么区别,所以结果看起来与 rebase 完全一样。就我而言,由于合并冲突,我无法进行变基。那么 rebase than 的目的是什么?

Rebase is different from merge 因为 git 只有在可以的情况下才使用 fast-forward。例如:您从 master 创建了一个新分支,您提交到您的新分支,您没有提交到 master,然后您想要 merge 将您的更改返回到 master:git 会认为这与您刚刚承诺 master 一样。如果您在这种情况下使用 rebase,它也会有同样的想法。

当您在两个分支上都有更改并且 git 不能使用快进时,真正的乐趣就开始了:然后 merge 将创建一个新的提交,父级将是您的最后一次提交在你的两个分支上,rebase 将尝试将你试图变基的分支的基移动到你的另一个分支的头部。

所以,为了 "fix" 你的历史(变成一条直线),你需要撤消你的合并(标记为 head)并且你需要将你的 Rebasing 分支变基到你的 master分支

git checkout Rebasing
git rebase master

你仍然会有冲突,需要解决并继续

git rebase --continue

根据需要多次。