Git:git merge和git rebase的区别

这篇具有很好参考价值的文章主要介绍了Git:git merge和git rebase的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分支合并

git merge是用来合并两个分支的。比如:将 b 分支合并到当前分支。同样git rebase b,也是把 b 分支合并到当前分支。他们的 「原理」如下:

假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。

$ git checkout -b mywork origin

假设远程分支"origin"已经有了 2 个提交,如下。

现在我们在这个分支做一些修改,然后生成两个提交(commit)。

$ vi file.txt
$ git commit
$ vi otherfile.txt
$ git commit
...

但是与此同时,有些人也在"origin"分支上做了一些修改并且做了提交了。

这就意味着"origin"和"mywork"这两个分支各自"前进"了,它们之间"分叉"了。

在这里,你可以用"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并;结果看起来就像一个新的"合并的提交"(merge commit):

但是,如果你想让"mywork"分支历史看起来像没有经过任何合并一样,你也许可以用git rebase:

$ git checkout mywork

$ git rebase origin

这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。

当mywork分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。如果运行垃圾收集命令(pruning garbage collection), 这些被丢弃的提交就会删除。(请查看 git gc)
 

解决冲突

        在 rebase 的过程中,也许会出现冲突(conflict)。在这种情况,Git 会停止 rebase 并会让你去解决 冲突;在解决完冲突后,用git-add命令去更新这些内容的索引(index),然后,你无需执行git-commit,只要执行:

$  git rebase --continue

这样 git 会继续应用(apply)余下的补丁。

在任何时候,你可以用–abort参数来终止 rebase 的行动,并且"mywork" 分支会回到 rebase 开始前的状态。

$  git rebase --abort

git rebase和git merge的区别

        用合并( merge )和用 rebase 所产生的历史的区别:

merge和rebase区别,版本管理工具,git

merge和rebase区别,版本管理工具,git

此时,

当我们使用Git log来参看 commit 时,其 commit 的顺序也有所不同。

假设 C3 提交于9:00AM,C5 提交于 10:00AM,C4 提交于 11:00AM,C6 提交于 12:00AM。

  • 对于使用 git merge 来合并所看到的 commit 的顺序(从新到旧)是:C7、C6、C4、C5、C3、C2、C1。
  • 对于使用 git rebase 来合并所看到的 commit 的顺序(从新到旧)是:C7、C6‘、C5’、C4、C3、C2、C1。

因为C6’提交只是 C6 提交的克隆,C5’ 提交只是 C5 提交的克隆。

从用户的角度看使用 git rebase 来合并后所看到的commit的顺序(从新到旧)是:C7、C6、C5、C4、C3、C2、C1。文章来源地址https://www.toymoban.com/news/detail-576839.html

到了这里,关于Git:git merge和git rebase的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git:Rebase和Merge之间的区别

    merge的原理是找到这两个分支的祖先commit,在两个分支最新的commit进行三方对比合并 例如下图,共同的祖先commit2,master最新commit6,develop最新commit5, merge会基于2,5,6 这三个commit进行对比: commit6和commit2对比,如果文件的哈希值不一样,同时commit5和commit2对比,发现一样,说

    2024年02月11日
    浏览(39)
  • Idea使用git拉取代码 : (git merge、git rebase)区别

    我们使用pull拉取远程仓库的代码时,通常有两个选项,一个是 merge ,一个是 rebase ,这两个之间有什么区别呢? 这两个选项都是将远程仓库的代码合并到本地仓库的代码,但是在使用上是不同的。 1、使用merge合并远程仓库的代码是按照代码的提交时间进行展示的,也就是说使用m

    2024年02月16日
    浏览(47)
  • git rebase与git merge图文详解(一文看懂区别)

    大家在工作中团队开发的时候对于拉取分支和合并代码时就会涉及到两种选择,git rebase与git merge: rebase:变基,会有一个干净的分支,但是对于记录来源不够清晰 merge:合并,git分支看起来比较混乱,但是清楚各个记录的来源与时间节点 推荐:全部使用merge 拉公共分支使用

    2024年01月18日
    浏览(51)
  • 版本管理|Git -目前最好的版本管理工具

    在软件开发中,版本通常指的是代码或项目的一个特定状态或发布的一个特定副本。每次对代码或项目进行修改时,开发团队可以选择增加版本号或标记新版本,以便在未来能够准确追踪和识别不同的代码状态。 在项目根目录下运行 tree命令可以查看文件树,版本是文件树在

    2024年04月11日
    浏览(75)
  • Git版本管理工具

    本文记录学习使用 Git 版本管理工具的学习笔记,通过阅读参考链接中的博文和实际操作,快速的上手使用 Git 工具。 本文参考了引用链接博文里的内容。 Git使用教程-配置管理 git reset详解-CSDN博客 3、Git使用不完全指南:git/github/gitlab/gitee的区别,原理和常用命令总结_gitlab

    2024年03月20日
    浏览(68)
  • 代码版本管理工具 git

    1.  去B站看视频学习,只看前39集: 01-Git概述(Git历史)_哔哩哔哩_bilibili 2.学习Linux系统文本编辑器的使用 vi编辑器操作指令分享 (baidu.com) (13条消息) nano编辑器的使用_SudekiMing的博客-CSDN博客 windows 下载安装 Git 官方下载地址: Git - Downloading Package 安装图解: https://www.cnblogs

    2024年02月04日
    浏览(62)
  • GIT版本管理工具教程

    下载安装, 下载地址: https://git-scm.com/downloads 每个系统的都有(linux、mac、windows等),看官网的安装教程,很详细,此处我以windows来练习 首先创建一个文件夹,这个文件夹就是我们将来通过git来管理的所有文件的存放地点 。 在文件夹中右键 使用Git Bash 在弹出的窗口中执行

    2024年02月04日
    浏览(52)
  • Git分支的合并策略有哪些?Merge和Rebase有什么区别?关于Merge和Rebase的使用建议

    参考:《Git 权威指南》、《Git团队协作》、快手git管理 (1)工作区域 首先来介绍介绍下Git的工作区域,分为 工作区 、 暂存区 和 仓库区 ,每个区域的转换关系如上图所示。 工作区(workspace) :就是我们平时本地存放项目代码的地方; 暂存区(index/stage) :用于临时存放

    2024年02月04日
    浏览(63)
  • 5.git版本管理工具使用

    git是分布式版本管理工具 版本控制? 版本控制是一种记录文件或修改文件历史记录,让用户查看历史版本   集中版本控制 都有单一的集中管理服务器,保存所有文件的修订版本,开发者通过客户端连接这台服务器,取出最新文件或提交更新 缺点:中央服务器单点故障, 如

    2024年02月03日
    浏览(62)
  • Git分布式版本管理工具

    能够记录历史版本,回退历史版本 团队开发,方便代码合并 git是一个分布式版本控制软件,最初由 林纳斯·托瓦兹 创作,于2005年以GPL许可协议发布。最初目的是为了更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools不同。 git最初的开发动力来自于BitKeeper和

    2023年04月08日
    浏览(88)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包