git-在当前分支做变基(rebase current onto selected)

这篇具有很好参考价值的文章主要介绍了git-在当前分支做变基(rebase current onto selected)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

git rebase变基

初学git,在合并分支上必定会常用到 git merge 语法。git除了使用合并(merge)集成2个分支之间的更改,还有另外一种称为rebase的方法。

git rebase <基础分支>

rebase的作用是改变基点。rebase把当前分支的基点,由与基础分支的共同祖先处,移动到基础分支的头部位置处,然后以新基点为基础,重新提交当前分支中的更改。

git rebase使用场景

Git中分支merge和rebase的适用场景及区别
参考URL: https://www.cnblogs.com/marblemm/p/7161614.html
git merge rebase的区别及应用场景
参考URL: http://www.mamicode.com/info-detail-1774810.html

两个使用场景是不一样的,merge只是合并另外一个分支的内容,rebase也合并另外一个分支的内容,但是会把本分支的commits顶到最顶端

假设我们现在有3个分支

  • master分支:线上环境使用的分支
  • testing分支:测试环境使用的分支
  • my_feature分支:开发新功能的分支,也就是当前分支

A. 假设我在my_feature上开发了一段时间,之后另外的同事开发的功能正式上线到master分支了,那么我可以在当前的分支下rebase一下master分支,这样我这个分支的几个commits相对于master还是处于最顶端的,也就是说rebase主要用来跟上游同步,同时把自己的修改顶到最上面

B. 我在my_feature上开发了一段时间了,想要放到testing分支上,那就切到testing,然后merge my_feature进来,因为是个测试分支,commits的顺序无所谓,也就没必要用rebase (当然你也可以用rebase)

另外,单独使用rebase,还有调整当前分支上commits的功能(合并,丢弃,修改commites msg)

git rebase还是git merge?

在开发过程中使用git rebase还是git merge,优缺点分别是什么?
参考URL: https://www.zhihu.com/question/36509119

两个使用场景是不一样的,merge只是合并另外一个分支的内容,rebase也合并另外一个分支的内容,但是会把本分支的commits顶到最顶端

merge 的话,会产生一个commit,记录合并的操作,可能是没有冲突自动生成的merge commit,也可能解决冲突后自己编写的 commit。总之多了一个 commit。

支持merge多一点,原因如下:

  • rebase过程中,一个commit出现冲突,下一个commit也极有可能出现冲突,一次rebase可能要解决多次冲突;
  • 合并的历史脉络(冲突)被物理消灭了
  • merge,合并结果不好看,一堆线交错,但合并有冲突的话,只要解一次就行了;

来自网上:有人说:“团队里有新人且水平参差不齐的情况下,建议统一 git merge,不然容易出来麻花,过去解完麻花再传授一番 git rebase 的原理,然后 git push -f 一发又有什么收益呢”。

为了追求Git的线好看,在团队合作中使用rebase说轻点是舍本逐末,说重了是对团队不负责任。个人以及本地项目无所谓。

总结:支持merge多一点,团队合作建议用merge。一般私有的用rebase,公开的用merge。(如果团队成员对于git的分支管理并不娴熟,那我推荐使用merge。)**开源项目中,我们一般会推荐commitor在提交PR前做一次rebase。**审核通过后,PR的commit list会合并成一个patch打到主分支中。所以无论是不是做过rebase,最终表现在master上都只是一个独立的commit。

git-在当前分支做变基(rebase current onto selected)

在当前分支做变基

Rebase Current onto Selected: 在当前分支做变基。(将所选分支提交加入到当前分支)

变基也是将一个分支的代码整合到另外一个分支。跟merge功能类似,但也存在着很大的不同。变基可以把提交线整合得更加是一条直线。

git-在当前分支做变基(rebase current onto selected)

$ git checkout dev
$ git rebase master

如上,我在dev分支,我选择吧 dev变基 到main,意思就是把main和合并到到dev和merge功效差不多,不同的是我们的commit提交就是置于最新的顶端。

总结:我们当前在哪个分支,选择某个分支,操作merge或者rebase都是把别人分支的东西合并到我当前的分支上。

使用总结

我们可以在自己独立的分支上,把代码变基到协作分支上,这样既不影响和别人的协作,也可以让自己的分支更加的简洁。

在本地分支中使用 rebase 来合并主分支的改动,是为了让你的本地提交记录清晰可读。(当然, rebase 不只用来合并 master 的改动,还可以在协同开发时 rebase 队友的改动。)文章来源地址https://www.toymoban.com/news/detail-495296.html

到了这里,关于git-在当前分支做变基(rebase current onto selected)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Git】如何使用sourcetree进行rebase操作(变基)

    注:接下来的演示操作仍将以SourceTree这个可视化工具为例。 个人感觉rebase这个功能有点多余,其实merge操作已经覆盖了它的功能。可能就是为了让整个commit看起来更顺畅一下,没有那么多的旁路分支,不那么杂乱。虽然个人不是很喜欢这个功能,但是很多开源库的作者再你提

    2024年02月04日
    浏览(53)
  • Git撤销本次pull rebase(变基) 回退到pull前的代码

     执行以下代码后,版本回退到之前的版本,怎么恢复? 1.输入命令查看本地记录 列表记录: 2.找到本次rebase之前的id:53106a6 3.执行命令回退 4.执行命名取消rebase状态   5.恢复现场    

    2024年02月16日
    浏览(45)
  • VSCode种git rebase分支冲突解决无法继续rebase

    情景:         常规来说我们git开分支开发完新功能之后,提交之前rebase dev分支,然后合并到dev上算是开发完成。 问题还原:         在开发完之后执行如下指令:          1.执行变基操作:git rebase dev。 //这一步出现冲突vscode上处理冲突,点击添加(相当于add,下图

    2024年02月17日
    浏览(42)
  • 【随笔】Git 基础篇 -- 分支与合并 git rebase(十)

    💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘 您的点赞、关注、收藏、评论,是对我最大

    2024年04月14日
    浏览(37)
  • 【随笔】Git 高级篇 -- 推送主分支 git rebase & git fetch(三十三)

    💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘 您的点赞、关注、收藏、评论,是对我最大

    2024年04月23日
    浏览(47)
  • git分布式管理-头歌实验合并远程分支、rebase、储藏

    任务描述 在软件开发中,通常会在版本库中创建多个不同的分支进行开发。例如,最基本的可以有一个测试版分支和一个正式版分支,其中测试版分支用来完成最新功能代码的开发与测试,正式版则用于管理即将发布的版本。 如果某个版本通过了测试,就需要将其推到正式

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

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

    2024年02月04日
    浏览(63)
  • git合并代码命令 分支合并代码 cherry-pick merge rebase区别

    1.cherry-pick 需要注意 暂存未提交的更改 暂存更改: 使用git stash或git stash push命令暂存当前工作目录和暂存区的更改。你可以提供一个消息作为参数,以便更容易地识别stash项: 执行cherry-pick: 现在,你的工作目录是干净的,可以安全地执行cherry-pick操作了。找到你想要cherry

    2024年04月12日
    浏览(49)
  • git 基于当前分支创建新分支

    要基于当前分支创建一个新分支,可以按照以下步骤进行: 首先,确保你处于想要基于其创建新分支的当前分支上。 确保当前分支的更改已经提交并推送到仓库中。 使用以下命令创建新分支: 这个命令将会创建一个名为 新分支名 的新分支,并且你会自动切换到这个新分支

    2024年04月26日
    浏览(42)
  • git基于当前分支创建新分支

    在当前分支下,新建分支 推送到远程仓库 将本地分支和远程分支关联 方法二 :用编辑器创建新分支 vscode 点击左下角分支,编辑器上方出现“从...创建分支”,直接创建新分支。分支代码推送到远程即关联远程分支   

    2024年02月09日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包