语法:git rebase upstream-branch to-branch (要变基的分支是后者,如果当前分支为to-branch,可以省略to-branch)
上述命令的详细过程为:
1、切换到to-branch分支;
2、将to-branch中比upstream-branch多的commit先撤销掉,并将这些commit放在一块临时存储区(.git/rebase);
3、将upstream-branch中比to-branch多的commit应用到to-branch上,此刻to-branch和upstream-branch的代码状态一致;
4、将存放的临时存储区的commit重新应用到to-branch上;
结束。
执行完上述第3步后,to-branch的代码状态已经改变,接着执行第4步时则可能会产生合并冲突。
冲突的解决办法:
手动编辑冲突文件解决。
1."both added"、"both deleted"、"both modified"类型的冲突,可以执行git checkout --ours(--theirs) fileName来选择想要保留的版本。也可以手动修改都保留。这里的ours指的是upstream-branch,theirs指的是将要应用的临时commit。
2."added by us/them”、"deleted by us/them"等类型的冲突需要使用git rm fileName和git add fileName来删除/添加file。(注意谁是us,谁是them)。?
执行:git add fileName(标记冲突已解决)
最后执行:git rebase --continue
如果某个补丁不需要应用,执行:git rebase --skip(慎用),
如果想回到rebase执行之前的状态,执行:git rebase --abort
结束。