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

这篇具有很好参考价值的文章主要介绍了【Git】如何使用sourcetree进行rebase操作(变基)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


注:接下来的演示操作仍将以SourceTree这个可视化工具为例。

个人感觉rebase这个功能有点多余,其实merge操作已经覆盖了它的功能。可能就是为了让整个commit看起来更顺畅一下,没有那么多的旁路分支,不那么杂乱。虽然个人不是很喜欢这个功能,但是很多开源库的作者再你提pr的时候都会要求你rebase到它最新的master分支上,这样作者评审代码的时候可能会更方便。

所以在这里给大家介绍下如何将某个分支rebase到另外一个分支上。

操作步骤

假如有如下的分支结构,我们希望将test分支rebase到master分支上。
sourcetree将当前变更变基到master,Git,git,rebase,变基,sourcetree

  1. 首先需要确保master和test分支的代码都是最新的代码(没事git pull一下),而且当前分支是test分支

  2. 然后,我们在master的M-A 这次提交上,右键点击【Rebase children of xxx interfactively】,如下图:
    sourcetree将当前变更变基到master,Git,git,rebase,变基,sourcetree
    在这里我们可以选择是否需要将4次commit合并为1次commit,如果需要则点击【Squash with previous】即可,具体操作可见这篇文章的第11小节。不合并就直接点击OK,如下图:
    sourcetree将当前变更变基到master,Git,git,rebase,变基,sourcetree
    点击之后一般都会有冲突,如下:
    sourcetree将当前变更变基到master,Git,git,rebase,变基,sourcetree
    不用担心,点击Close关闭弹框即可,然后使用source tree解决冲突。在这里有一点需要特别注意
    sourcetree将当前变更变基到master,Git,git,rebase,变基,sourcetree
    rebase解决冲突时,与我们常规的merge解决冲突的Theris和Mine是反的。即这里的Theirs代码的是test分支上的内容,Mine代表的是master分支上的内容

  3. 解决完冲突之后,不要进行commit,保持你是如下这样的页面:
    sourcetree将当前变更变基到master,Git,git,rebase,变基,sourcetree

  4. 然后打开git命令行工具,可以看到提示说:所有冲突都解决了,请使用git rebase --continue命令。
    sourcetree将当前变更变基到master,Git,git,rebase,变基,sourcetree
    那我们就输入这个命令即可,如何提示还是有冲突那就继续解决。当所有的冲突都解决完了,git会告诉我们rebase已经成功了,如下图:
    sourcetree将当前变更变基到master,Git,git,rebase,变基,sourcetree
    此时我们就可以看到现在的test已经rebase到了master上(只是本地rebase好了,还并没有推送到远端哦):
    sourcetree将当前变更变基到master,Git,git,rebase,变基,sourcetree

  5. 但是这里又需要我们特别注意:git告诉我们本地的test分支与远端的test分支不一致,需要我们先把那5个提交pull下来,这里一定不要pull,否则就会额外多了一个merge操作。 ( 不过如果你的test分支远端不存在的话(都是自己本地提交的),则不会有这个问题,在这里直接git push上去就行。)
    所以在这里使用git push --force直接强推上去。
    sourcetree将当前变更变基到master,Git,git,rebase,变基,sourcetree

  6. rebase完成。

Q&A

Q1: 如果我之前已经习惯了使用merge,我自己的test分支上有很多提交都是从其它分支上merge过来的,而且已经解决了不少的提交。现在要rebase到master上肯定这些冲突还会再次出现,只能一个个手动解决吗?

A: 非也。首先从master merge到test上(确保后续的rebase冲突可以很好解决),然后基于当前test创建一个临时分支,将这个临时分支rebase上去。创建临时分支的操作如这里的3.1小节所介绍。这里简单解释下操作(首先保证当前分支为test分支):

//创建临时分支
git checkout --orphan tmp

//添加所有并提交
git add .
git commit -m "创建临时分支并本地提交"

最后,将tmp分支rebase到master即可,你会发现冲突很好解决,基本使用【Resolve using “Theirs”】就可以。

Q2: SourceTree这里的rebase是什么意思?与下面的rebase有什么区别?
sourcetree将当前变更变基到master,Git,git,rebase,变基,sourcetree
A2: 本质行一样,没什么区别。下面的哪一个功能更丰富一点,可以让我们选择是否要【Edit Message】和【Squash commits】。

Q3: rebase过程中,后悔了咋弄?不想rebase了。
A3: 执行git rebase --abort就行,恢复的干干净净,不会影响你的代码。文章来源地址https://www.toymoban.com/news/detail-758373.html

到了这里,关于【Git】如何使用sourcetree进行rebase操作(变基)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • IDEA中Git面板操作介绍 变基、合并、提取、拉取、签出

    IDEA中Git面板操作介绍 变基、合并、提取、拉取、签出

      如图,在IDEA的Git面板中,仓库会分为本地仓库和远程仓库,代码仓库里面放的是各个分支。   分支前面的书签🔖标志表示当前分支。   合并(merge)和变基(rebase)是在 Git 中常用的两种分支整合方法。   合并(merge)是将一个分支的更改合并到另一个分支中。

    2024年02月11日
    浏览(8)
  • Idea下面git的使用:变基、合并、优选、还原提交、重置、回滚、补丁

    Idea下面git的使用:变基、合并、优选、还原提交、重置、回滚、补丁

    变基是把本项目的所有提交都列出来按顺序一个个提交到目标分支上去 而合并是把两个分支合并起来,但是旧的分支还是可以启动其他分支,在旧的分支上继续开发 :::success 主动变基和被动变基的区别 ::: 没有什么区别变基,只是把合并的一种策略,把两个分支的有差异的提

    2024年02月08日
    浏览(11)
  • IDEA git 操作中的Merge和Rebase

    IDEA git 操作中的Merge和Rebase

    \\\"Merge incoming changes into the current branch\\\"和\\\"Rebase the current branch on top of incoming changes\\\"都是在Git中常用的合并分支的方式。 它们的主要区别在于合并后的分支历史记录和代码改动的顺序不同。 \\\"Merge incoming changes into the current branch\\\"会将远程分支的改动合并到当前分支的新提交中。这

    2024年02月16日
    浏览(9)
  • VSCode/SourceTree等GUI界面操作Git时,使用nvm,husky pre-commit中npm等命令command not found的解决方案

    报错 npm command not found in PATH: ... 因为GUI环境中启动husky,没有npm、nvm、node的PATH环境变量,需要跟配置bash、zsh等终端一样进行环境的配置 创建 ~/.huskyrc 或者export PATH=“$PATH:${node的路径}”

    2024年02月04日
    浏览(35)
  • git commit后,如何进行撤销commit操作

    在我们使用git作为版本控制工具进行代码管理之后,经常性的会碰到一个问题:git commit后,如何撤销commit,下面详细讲一下。 git add newFiles git commit -m \\\'新增xx页面\\\' 执行commit后,还没执行push时,想要撤销这次的commit,该怎么办? 解决方案: 我们可以使用命令:git reset --soft

    2024年02月11日
    浏览(6)
  • 【git】Mac Sourcetree 中一个项目改了密码,操作无权限
git remote: HTTP Basic: Access denied

    【git】Mac Sourcetree 中一个项目改了密码,操作无权限 git remote: HTTP Basic: Access denied

    第一步:在程序中找到“ 钥匙串 ” 第二步:搜索 sourceTree  第三步:删除对应项目 第四步:重新进入 Sourcetree 操作,会提示重新输入密码, 输入新密码即可 。 解决方案: 1、在sourcetree 的界面打开终端 2、在终端输入   git config --global credential.helper store 3、操作git pull 重新输

    2024年02月12日
    浏览(26)
  • git rebase 使用解决冲突

    只有一个分支master时,工作流程是 git clone master branch 在自己本地checkout -b local 创建一个本地开发分支 在本地的开发分支上开发和测试 阶段性开发完成后(包括功能代码和单元测试),可以准备提交代码 首先切换到master分支,git pull拉取最新的分支状态 然后切回local分支 通过

    2024年02月08日
    浏览(11)
  • git使用工具sourcetree创建分支合并主支

    git使用工具sourcetree创建分支合并主支

    平时项目开发中,需要从主支上拉取代码,创建自己的分支,将需要发布的部分代码提交到分支上,再合并到主支,记录一下操作 第一步:正常clone项目到sourcetree上,克隆部分就不写了 第二步:点击“分支”,创建属于自己的分支(可以用自己名字简称,比较有辨识度),

    2024年02月11日
    浏览(36)
  • 【Git系列】rebase的使用场景

    【Git系列】rebase的使用场景

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年04月25日
    浏览(10)
  • git使用patch进行补丁操作

    git使用patch进行补丁操作

    在软件开发中,代码协作和版本管理是至关重要的。Git 是一个流行的分布式版本控制系统,它提供了各种功能来简化团队合作和代码管理。但是如何给已有项目打补丁,如何在线上运行的项目做增量修改是运维以及开发者需要掌握的一个比较高级的git技术,本文将介绍如何使

    2024年02月04日
    浏览(14)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包