记一次回滚操作

  1. 路人甲让我修改一个bug,我在develop下修改了
  2. 路人甲让我push到releae/sdk0.7分支上
  3. 我本地操作切换到release分支并合并develop上的修改:
    • git checkout release/sdk0.7
    • git merge develop
    • git pull
    • git push origin release/sdk0.7
  4. 路人甲pull下来看了下之后,发现问题:
    • 只要我修改的那个bug
    • 不要develop上的其他新修改(develop上有多人的新提交)
  5. 我本地分支试验下回滚操作:
    • git checkout -b rfake 分支一个rfake出来做试验
    • 查看我那个修改是develop上的倒2个commit,
    • git cherry-pick develop~1 把develop的倒2个commit 通过cherry pick合并到rfake这个分支
      • 擦亮眼睛:cherrypick可以取到任何一个分支的任何一个commit,配合reset你想干嘛就干嘛
    • git log查看下,正确,
  6. 回滚:
    • git checkout release/sdk0.7
    • git reset --hard commithash 到第2个步骤之前的commit(commithash只要指定commit的前面几位hash数字即可)
      • 可以通过git log查看某个commit的hash值
    • git push origin release/sdk0.7 -f 强制push到仓库
    • 重复第5个步骤的事情
    • git push origin release/sdk0.7
  7. 路人甲需要做:
    • git reset --hard commithash 到第2个步骤时release分支的最新commit
    • git pull 重新拉取
  8. 事实上,如果一开始就正确操作就可以避免回滚:
    • 一开始就在relsease分支上修改,或者从release分支出来一个新分支来修改
    • 修改完毕,提交到release分支
    • 把release分支的修改merge到develop上,因为develop总是比release新。
  9. 这个操作覆盖了git的大部分操作:
    • 如何切换到分支开发,如何建立新分支做实验
    • 如何合并其他分支上的修改到当前分支
    • 如何提取某个分支的某个commit并合并到当前分支
    • 如何重置
    • 如何强推
    • 怎样正确的在发布分支上改bug

使用GitHub实施团队项目开发

理解git的原理

git by example的更多相关文章

  1. Git 子模块 - submodule

    有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另 ...

  2. Git 在团队中的最佳实践--如何正确使用Git Flow

    我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用. Git的优点 Git的优点很多,但是这里只列出我认为 ...

  3. Git与Repo入门

    版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文 ...

  4. Git Bash的一些命令和配置

    查看git版本号: git --version 如果是第一次使用Git,你需要设置署名和邮箱: $ git config --global user.name "用户名" $ gi ...

  5. 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net

    1. 注册一个账号和创建项目 先在git.oschina.net上注册一个账号和新建一个project ,如project name 是"myTest". 2.安装git sudo ...

  6. 史上最详细git教程

    题外话 虽然这个标题很惊悚,不过还是把你骗进来了,哈哈-各位看官不要着急,耐心往下看 Git是什么 Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别 SVN是集中式版本控制 ...

  7. [版本控制之道] Git 常用的命令总结(欢迎收藏备用)

    坚持每天学习,坚持每天复习,技术永远学不完,自己永远要前进 总结日常开发生产中常用的Git版本控制命令 ------------------------------main-------------- ...

  8. 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解

    工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...

  9. git 命令

    切换仓库地址: git remote set-url origin xxx.git切换分支:git checkout name撤销修改:git checkout -- file删除文件:git rm  ...

  10. git亲测命令

    一.Git新建本地分支与远程分支关联问题 git checkout -b branch_name origin/branch_name 或者 git branch --set-upstream bra ...

随机推荐

  1. CSS3 background-size属性

    请复制粘贴,图片请自带 <!DOCTYPE html > <html > <head> <meta charset="utf-8"> ...

  2. Axure RP7.0 使用记录手册

    第一章   Axure RP7.0 下载,汉化与注册教程 一.下载软件 Axure官网:http://www.axure.com/ Axure教程官网:http://www.iaxure.com/ 网 ...

  3. Percona XtraBackup User Manual 阅读笔记

    XtraBackup XtraBackup 2 安装XtraBackup 2.1 安装XtraBackup binary版本 2.1.1 yum的安装方法: 2.1.2 直接下载rpm包安装 3 Xt ...

  4. PowerBI 引入时间智能

    简介 Power BI Desktop -是一款由微软发布的自助式商业智能工具,功能强大.易于使用.其中还可以通过微软云连多个数据源并且使用数据源来创建可视化表盘. 但是几乎所有的BI都需要展示如何随 ...

  5. Java NIO 基础

    Java在JDK1.4中引入了 java.nio 类库,为Java进军后端Server和中间件开发打开了方便之门. 一般而言,这里的 nio 代表的是 New I/O,但是从实质上来说,我们可以将其理 ...

  6. mydumper 安装报错处理

    mydumper 官网:https://launchpad.net/mydumper 下载之后,安装报错: [root@localhost local]# cd mydumper-0.6.2 [roo ...

  7. Linux服务器下nginx的安全配置

    1.一些常识 linux下,要读取一个文件,首先需要具有对文件所在文件夹的执行权限,然后需要对文件的读取权限. php文件的执行不需要文件的执行权限,只需要nginx和php-fpm运行账户的读取权限 ...

  8. Oracle 常用SQL技巧(转)

    1. SELECT子句中避免使用 “*”当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法.不幸的是,这是一个非常低效的方法. 实际上,ORACLE在解 ...

  9. Highcharts使用简例 + 异步动态读取数据

    第一部分:在head之间加载两个JS库. <script src="html/js/jquery.js"></script> <script src= ...

  10. AngularJS服务

    在使用AngularJS的路由管理和控制视图加载的时候,当新的视图加载进来,原有视图的控制器会被销毁,这是出于内存占用和性能的考虑.服务提供了一种能在应用的整个生命周期内保持和共享数据的方法,它能够在 ...