git merge vs git rebase的区别

从概念上,git merge和git rebase都是用来解决同样的问题,即合并两个branch的修改。

Both of these commands are designed to integrate changes from one branch into another branch—they just do it in very different ways.

merge

git merge dev:

Git 会自动根据两个分支的共同祖先commit 和两个分支的最新提交即进行一个三方合并,然后将合并中修改的内容生成一个新的 commit.

rebase

如果是在 master 分支上git rebase deve:Git 会从两个分支的共同祖先开始提取 master 分支(当前所在分支)上的修改,再将 master 分支指向 deve 的最新提交(目标分支)处,然后将刚刚提取的修改依次应用到这个最新提交后面。操作会舍弃 master 分支上提取的 commit,同时不会像 merge 一样生成一个合并修改内容的 commit,相当于把 master 分支(当前所在分支)上的修改在 deve 分支(目标分支)上原样复制了一遍.且新commit的hash code不同。

(串行)

总结:选择 merge 还是 rebase?

merge 是一个合并操作,会将两个分支的修改合并在一起,默认操作的情况下会提交合并中修改的内容

merge 的提交历史忠实地记录了实际发生过什么,关注点在真实的提交历史上面

rebase 并没有进行合并操作,只是提取了当前分支的修改,将其复制在了目标分支的最新提交后面

rebase 的提交历史反映了项目过程中发生了什么,关注点在开发过程上面

merge 与 rebase 都是非常强大的分支整合命令,没有优劣之分,使用哪一个应由项目和团队的开发需求决定

merge 和 rebase 还有很多强大的选项,可以使用git help 查看

最后:一些注意点

使用 merge 时应考虑是采用--no-ff默认操作,生成一个对回顾提交历史并不友好的合并记录,还是采用--ff-only方式

rebase 操作会丢弃当前分支已提交的 commit,故不要在已经 push 到远程,和其他人正在协作开发的分支上执行 rebase 操作

与远程仓库同步时,使用 pull 命令默认进行了git fetch + git merge --no-ff两个操作,可以通过加上--rebase命令将 fetch 后的 merge 操作改为 rebase 操作,或者仅仅 'git fetch remoteName',然后才思考采取哪种整合策略git merge(or rebase) origin/master

开发与 commit 时注意自己此时在哪个分支上。

Summary

If you would prefer a clean, linear history free of unnecessary merge commits, you should reach for git rebase instead of git merge when integrating changes from another branch.

On the other hand, if you want to preserve the complete history of your project and avoid the risk of re-writing public commits, you can stick with git merge

参考:

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

https://www.atlassian.com/git/tutorials/merging-vs-rebasing

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,662评论 1 26
  • 1. GIT命令 git init在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个re...
    江边一蓑烟阅读 834评论 0 0
  • “最近病情怎样?”院长和蔼的微笑温暖如春,筷子从我的盘中夹走了一枚包子。
    U0阅读 252评论 1 2
  • 公司项目里需要一款柱状图,在网上找了好多版本都没有适合项目要求的,最后只能自己写一个了(还是那句话,人都是逼出来的...
    ZPCoder阅读 3,650评论 3 8
  • 又来到那个街口 任心事随风飘走 也想往前走走 却愿为你停留 静静的听着失落沙洲 想到有时候 你的温柔 停留在那个街...
    瓢城旧孟阅读 313评论 1 0