git merge 和 rebase

2018-09-06  本文已影响86人  吧啦啦小汤圆

每次在合并分支代码,都不知道是该用git merge 还是rebase, 非常抓瞎,分不清它们的区别,这次就来搞清楚,再也不迷茫~

1. merge 和 rebase 的作用

2. 场景

有mater 和 feature 分支如下:


git merge

执行命令:

git checkout feature
git merge master
以上等价于: git merge master feature

将master上的提交合并到feature 上,此时,在feature 上回自动产生一个新的commit(merge commit),如下:


git rebase

执行如下命令:

git checkout feature
git rebase master

下面来一个更形象的图:


image.png

3. merge 和 rebase 的相同点 和不同点

相同点
不同点

4. merge 和rebase 的优缺点

git rebase 场景分析:

上面是 rebase master 分支到feature 分支上,可以看到rebase 的原理:
rebase 时会将master 上新的commits 移动到 feature 分支的顶端, 但是其他同事还在 original master 分支上,这时候git 就会认为feature 分支的历史与其他人的master 分支有分歧,就会产生冲突。
所以在谨慎使用git rebase, 使用rebase 之前需要确定:
别人会看到这个分支吗?别人会用到这个分支吗?
如果有,不能用这中破坏性修改分支历史的rebase 命令
如果没有,可以用

5. merge 和 rebase 使用场景

Rebase 的黄金法则
never use it on the public branch (不要在公共分支上使用它)

如果选择?


查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
查看分支合并图: git log --graph pretty=online

上一篇 下一篇

猜你喜欢

热点阅读