git log --graph可以查看分支合并图

1》他们都是用于从一个分支获取并且合并到当前分支

2》一个场景:在feature分支进行新特性的开发,与此同时,master分支也有新的提交,为了将master上的新提交合并到你的feature分支上

3》merge合并

执行的命令是:

git checkout feature

git merge master

此时在feature上git会自动产生一个新的commit

merge特点:自动创建一个新的commit

优点:记录真实的commit情况,包括每个分支的详情

缺点:因为每次merge会自动产生一个merge commit,所以commit比较频繁时,分支会很杂乱

合并遇到冲突:仅需要修改后重新commit

4》rebase合并(本质是变基)

执行命令:

git checkout feature

git rebase master(feature分支上)

它会把你整个feature分子移动到master分支后面,有效的把所有master分支新的提交并入过来

rebase特点:会合并之前的commit历史

优点:得到跟简洁的项目历史,去掉了merge commit

缺点:如果合并出现代码问题不容易定位

合并是出现冲突:修改冲突部分

git add

git rebase --continue(如果执行无效,可以git rebase --skip)

rebase黄金法则:绝不要在公共分支上使用它

比如:将master分支rebase到你feature分支上

git rebase fearure(master分支上)

将master分支的所有提交移到feature分支后面,问题是它只发生在你的代码仓库中,其他所有开发者还在原来的master分支上,git会认为你的master分支和其他人的master以及分叉

git rebase会获得一个干净的没有merge commit的线性历史树

git merge可以避免commit history的风险

 

 

 

 

 

 

 

 

 

 

 

 

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐