git rebase

2019-05-14  本文已影响0人  JJNile

介绍

merge 是一种简单方便的合并方法,但是它却不是唯一的方法,rebase 也可以进行合并。

merge 合并分支后图形会出现一堆交叉线,合并出现冲突,不管多少次冲突都只要解一次

rebase 合并分支后图形只会形成一条线,查看时清晰明了,合并出现冲突比较麻烦,如果出现多次冲突需要一次一次去手动解决

简单来说就是,merge是合并其他分支的内容,rebase也是合并其他分支的内容,但rebase会把本分支的commits放在分支最顶部

相关参数

git rebase --abort 放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃

git rebase --skip 会将引起冲突的commits丢弃掉,一般谨慎使用

git rebase --continue 合并冲突时用,结合"git add 文件"命令一起用与修复冲突。

git rebase

使用

在项目中master作为主分支,dev作为开发分支。

分支合并
此时dev分支上在正在a文件添加新功能,忽然master上a文件出现一个bug,需要紧急修复。

一般情况下我们都会先基于 master 下创新一个新的分支 hotfix,然后在hotfix中修复bug,后再合并到master。

合并完后,会出现一个问题,就是master和dev的a文件都进行的操作会发生冲突,这个时候要求master的分支图必须是一条线,所以要在dev使用git rebase 进行合并。

首先在dev分支中将master分支rebase过来,使用命令

# git checkout dev
# git rebase master

如果没有冲突的话,合并会很顺利,但是由于我们之前修复bug改了a文件,所以会出现冲突,git会停止rebase让你去解决冲突,所以我们需要手动解决完冲突。

在rebase的时候会提示冲突,当然也可以用diff查看冲突

# git diff

这一步解决冲突就是将修复bug的代码手动添加到当前a文件中。

解决完冲突后再执行add,提交修改

# git add a

提交完后,不执行commit,执行

# git rebase --continue

这样git会继续apply余下的补丁。

合并多次提交
https://www.jianshu.com/p/913dad94f289

总结

rebase的目的是为了让分支图看起来是一条连续的commit line,避免不必要的commit形成分叉,方便后续code review。

在不是完全掌握rebase的情况下,多人开发的公共分支要把个人分支合并进来时,推荐merge,避免造成不必要的麻烦,

另外我们在pull的时候也可以使用rebase,使拉取远程代码到本地时的保证不会分叉,只形成一条commit line

# git pull –rebase

参考

http://www.jianshu.com/p/cca69cb695a6

上一篇下一篇

猜你喜欢

热点阅读