前言

在开发过程中, 我们有的时候会有代码提交失误的情况. 在前一章, 我们介绍了git push - - force命令. 本章我们介绍git rebase命令及 SourceTree内的相关操作.

git rebase 与提交纪录重写


当前状况 & 目标

当前状况


当前状况. 我们可以看到. 当前有2个分支.

  • master 分支: <d53dcf7> -- <de1f522>
  • tmp 分支: <d53dcf7> -- <ad85a6G> -- <b89316c>
  • 目标: 更新tmp分支. <d53dcf7> -- <de1f522> -- <rebase合并 (ad85a6G) / (b89316c)>
目标状况
  • tmp分支: d53dcf7> -- <de1f522> -- <rebase合并节点 (63af0ce)>

SourceTree 操作

  • 首先, 选中当前分支为tmp分支. 选中master分支头节点. 选择交互式变基础.

  • 点击squash合并之前的2次提交记录.


    此处. 如果你想保留之前的提交记录就不用squash了.

  • 点击确定, 发现当前节点状态如下.

    注意. 可以发现origin/tmp还是保留那个之前的记录的. 但是新的tmp则不同. 可以明显发现已经rebase了.

  • 推送更新远端 git push --force

    注意git push --force一般是在你自己的个人分支上执行. 如果项目组有其他人, 建议提前和其他人交流一下.

[1]. 用了两年git,rebase原来这样用
[2]. [sourcetree] rebase的使用
[3]. 在sourceTree 中使用 rebase (变基)
[4]. git rebase使用笔记


Git 命令方式

非合并变基

  • git rebase -i <基础节点名称>


    rebase之后. 出现图2. 表示变基内的所有更新. 此处出现文件冲突.

  • 手动合并冲突后. 添加冲突的文件. git add README.md

  • git rebase --continue

  • git push --force 随后更新远端分支即可.


Tips

我们有时候可以放弃rebase操作.

  • rm -fr ".git/rebase-merge"
  • git rebase --continue | --abort | --skip

多节点Merge成一个提交


# 合并2次提交
pick 50b1ccf [rebase-merge] tmp2 2 in 1. squash.
squash 600a1ca
  • 解决冲突
  • 修改README.md冲突文件
# letcode-all
练尽LetCode所有都题目。 天下没有难写的算法。嘿嘿。---<<<<<<< HEAD
### 目录3
=======
Tpm2 -
### 目录
>>>>>>> 50b1ccf... tpm2* 算法
* 多线程
* SQL---### 算法练习目录

提交

git add README.md
git rebase --continue
  • 注意几次提交记录的编写

  • 成果

    如果有需要的话. git push --force同样更新远端即可.

总结

  • 切换到需要Rebase的分支.
  • git rebase -i <节点ID>
  • 单次提交不需要操作. / 合并提交. 更新squash.
  • 无冲突即可成功. / 存在冲突, git add <confilct-file> / git rebase --continue.
  • 需要更新远端git push --force.

Others
git checkout master
git pull
git checkout local
git rebase -i HEAD~2  //合并提交 --- 2表示合并两个
git rebase master---->解决冲突--->git rebase --continue
git checkout master
git merge local
git push

git在工作中正确的使用方式----git rebase篇

[Git Rebase] Git Rebase 合并提交(命令操作 SourceTree 操作)相关推荐

  1. git 新建分支、合并分支和撤回push操作

    git 的操作流程 1.切换至master分支:git checkout master 2.创建并切换到dev分支:git checkout -b dev 3.将dev分支push到远程仓库(与本地仓 ...

  2. git回滚远程合并提交

    一.问题描述 在一次生产发布中,不能把合并到master的新功能发出去,但是生产又有bug要修复,所以master代码要回滚,将develop合并到master的合并提交回滚到master的上一次提交 ...

  3. java向hdfs提交命令_Java语言操作HDFS常用命令测试代码

    本文主要向大家介绍了Java语言操作HDFS常用命令测试代码,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. package com.yxc.hdfs; import org.apac ...

  4. 改进合作 Git 工作流:自动提取、合并提交

    每天,美团的上百名工程师都在不断改进美团的用户体验,或是加入各种新鲜的功能.作为负责展现.交互的前端工程师,我们上线的次数可达一天数十次. 我们使用 Stash 托管项目代码.每个功能都新增一个新任务 ...

  5. Linux:搭建GIT服务,Linux中使用git,git基础命令,和原理

    目录 GIT GIT安装 Git概念 Git使用 Git的文件分类 提交代码 Git提交代码总结 增加补充代码 diff 查看纤细修改内容 HEAD 检出[checkout]​​​​​​ 重置[res ...

  6. 【Git从青铜到王者】第四篇:Git的分支与合并

    系列文章目录 文章目录 系列文章目录 前言 一.Git分支 1.Git分支简介 2.Git分支创建 3.Git分支切换 二.Git分支的新建与合并 1.新建分支 2.分支的合并 3.遇到冲突时的分支合 ...

  7. Git (13) -- Git 分支 -- 分支的新建与合并

    文章目录 0.准备工作 1.新建分支 一个简单提交历史: 创建一个新分支指针: `iss53` 分支随着工作的进展向前推进: 基于 `main` 分支的紧急问题分支 `hotfix branch`: ...

  8. git 新建分支并切换到该分支_git切换到指定分支,git新建分支与合并

    一,git切换到指定分支 使用git进行开发的时候经常会遇到需要切换远程分支并且提交到远程指定分支的情况,操作如下 1,查看远程所有分支 git branch -a git branch不带参数,列出 ...

  9. 【Git】Git基础

    1.版本工具 1.1 具备的功能 协同修改 多人并行不悖的修改服务器端的同一个文件.数据备份 不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态. 版本管理 在保存每一个版本的文件信息的时 ...

最新文章

  1. Exp 8 Web基础 20164302 王一帆
  2. 关注度越来越高的行人重识别,有哪些热点?
  3. Sublime和Webstorm新建代码块
  4. python数独解题器,Python中最短的数独求解器 – 它是如何工作的?
  5. 编程语言“铁三角”,JavaScript 力压 Java和Python
  6. Product guid got as Anchor
  7. 五、案例-指令参考-freemarker指令、表达式
  8. Oracle免客户端InstantClient安装使用
  9. 【Flink】Flink 清理过期 Checkpoint 目录的正确姿势
  10. C++_类和对象_C++继承_菱形继承_或钻石继承_问题及利用虚继承解决该问题---C++语言工作笔记068
  11. aps是什么意思_三分钟看懂ERP、MES、APS系统的关联和区别
  12. html5的service worker,GitHub - w3c/ServiceWorker: Service Workers
  13. postgresql 模式与用户,及跨库访问
  14. 如何让bootbox弹框垂直居中
  15. 美林投资时钟与大类资产配置
  16. 牛客多校10 Train Wreck (模拟,思维题,优先队列重载小于号的操作)
  17. 西安交大计算机专业考研复试,2018西安交通大学计算机考研复试分数线_计算机考研分数线...
  18. Linux下 Python通过ctypes调用cAPI (一)
  19. 如何利用excel和python构建拟合曲线预测可转债股票价格?
  20. 数据库候选关键词怎么求_关系模式中候选关键字的图论求解法

热门文章

  1. Beego exper表达式
  2. Centos7 开启图形界面
  3. OFBIZ分享:如何让OFBIZ使用中文界面
  4. softmax与交叉墒层的实现原理以及梯度计算
  5. Core Audio I/O File Recording
  6. CentOS 7代理设置(Yum/cURL/Wget/Docker)
  7. 在线教育退潮,教育硬件起浪:“老厂”造平板,“大厂”造台灯
  8. egg项目部署到服务器
  9. php 转换 html code,PHP 将 HTML 代码 转换到 UBB 论坛代码
  10. Qt官方示例:UI Components: Scroll Bar Example(自定义滚动条)