记一次回滚操作

  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. TCP的粘包现象

    看面经时,看到有面试官问TCP的粘包问题.想起来研一做购物车处理数据更新时遇到粘包问题,就总结一下吧. 1 什么是粘包现象 TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看, ...

  2. Play Framework 完整实现一个APP(一)

    A blog engine project yabe. 1.创建工程 >play new yabe 设置Application Name: Yet Another Blog Engine. 2. ...

  3. H5一二事

    先回顾一下WEB技术的几个阶段 Web 1.0 内容为主,主要流行HTML和CSS Web 2.0 动态网页,流行AJAX/JavaScript/DOM H5 时代,WEB开发回归富客户端 那么H5肯 ...

  4. C# Excel导入导出

    /// <summary> /// 导出Excel /// </summary> /// <typeparam name="T"></ty ...

  5. ORACLE 如何查看索引重建进度情况

    在ORACLE数据库中,如果一个比较大的索引在重建过程中耗费时间比较长,那么怎么查看索引重建耗费的时间,以及完成了多少(比例)了呢,我们可以通过V$SESSION_LONGOPS视图来查看索引重建的时 ...

  6. Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作

    2 Mongodb CRUD 操作 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mong ...

  7. C++/CLI——读书笔记《Visual C++/CLI从入门到精通》 第Ⅱ部分

    =================================版权声明================================= 版权声明:本文为博主原创文章 未经许可不得转载  请通过右 ...

  8. oracle11G使用DGbroker创建dg

    1.环境: a.主机环境:centos6.5 b.软件环境:oracle 11.2.0.4 c.主机信息: DG1:192.168.100.51(数据库sid:atest) DG2:192.168.1 ...

  9. Redis安装和配置

    1.下载安装redis 在linux服务器上,命令行执行以下命令(cd ./usr local/src 一般源码放在这里(推荐源码安装)) wget http://download.redis.io/ ...

  10. iOS上传App Store报错:this action cannot be completed -22421 解决方案

    最近swift项目升了xcode8,提交版本时,遇到这个: this action cannot be completed -22421 瞬间懵逼,连具体报错原因都没有,只有一个代码 22421,找了 ...