git rebase 用法简介

来源:互联网 发布:知君本无邪 编辑:程序博客网 时间:2024/06/05 18:16

两个独立分支的代码合并有两个比较常用的命令,分别是 git cherry-pick <commit-id>和git rebase。cherry-pick  主要用于copy某个单独分支的patch,而rebase主要用于一次性合并整个分支。以下主要介绍rebase:

语法:git rebase <upstream-branch-name> <to-branch-name>  (要变基的分支是后者  to-branch-name)
上述命令的详细过程为:
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步时则可能会产生合并冲突。
 
冲突的解决办法:
手动编辑冲突文件解决。
对于“both added”、“both deleted”、“both modified”等类型的冲突,若想完整地保留某一方的修改可以执行git checkout --ours(或者--theirs) <文件名>来选择想要保留的版本。需要注意的是由于git rebase 是先撤销再应用commit,所以这里的ours指的是upstream-branch,theirs指的是我们将要应用的临时commit。
对于“added by us/them”、“deleted by us/them”等类型的冲突需要使用git rm <file-name>和git add <file-name>来删除/添加file。(注意谁是us,谁是them)。
冲突解决完之后,

执行  git add <file-name>   来标记冲突已解决,

最后执行  git rebase --continue  

如果某个补丁不需要应用,执行:
git rebase --skip(慎用)
如果想回到rebase执行之前的状态,执行:  
git rebase --abort

结束。


下面介绍git rebase -i 的用法:

原创粉丝点击