git by example
记一次回滚操作
- 路人甲让我修改一个bug,我在develop下修改了
- 路人甲让我push到releae/sdk0.7分支上
- 我本地操作切换到release分支并合并develop上的修改:
- git checkout release/sdk0.7
- git merge develop
- git pull
- git push origin release/sdk0.7
- 路人甲pull下来看了下之后,发现问题:
- 只要我修改的那个bug
- 不要develop上的其他新修改(develop上有多人的新提交)
- 我本地分支试验下回滚操作:
- git checkout -b rfake 分支一个rfake出来做试验
- 查看我那个修改是develop上的倒2个commit,
- git cherry-pick develop~1 把develop的倒2个commit 通过cherry pick合并到rfake这个分支
- 擦亮眼睛:cherrypick可以取到任何一个分支的任何一个commit,配合reset你想干嘛就干嘛
- git log查看下,正确,
- 回滚:
- 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
- 路人甲需要做:
- git reset --hard commithash 到第2个步骤时release分支的最新commit
- git pull 重新拉取
- 事实上,如果一开始就正确操作就可以避免回滚:
- 一开始就在relsease分支上修改,或者从release分支出来一个新分支来修改
- 修改完毕,提交到release分支
- 把release分支的修改merge到develop上,因为develop总是比release新。
- 这个操作覆盖了git的大部分操作:
- 如何切换到分支开发,如何建立新分支做实验
- 如何合并其他分支上的修改到当前分支
- 如何提取某个分支的某个commit并合并到当前分支
- 如何重置
- 如何强推
- 怎样正确的在发布分支上改bug
使用GitHub实施团队项目开发
理解git的原理
- 最佳实践、本文略晦涩、慎入:Commit Often, Perfect Later, Publish Once: Git Best Practices
- 图解Github的PullRequest开发方式:Understanding the GitHub Flow
- 一种成功的git分支策略:A successful Git branching model
- 如何写好git的提交日志:How to Write a Git Commit Message
- 抱持提交历史的干净、整洁:Keeping Commit Histories Clean
- 最好的git合并工具:What's the best visual merge tool for Git?
- git的最佳操作之一是用命令行,但是合并冲突的时候,一个跨平台的Diff工具会带来极大便利:visual diff
git by example的更多相关文章
- Git 子模块 - submodule
有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另 ...
- Git 在团队中的最佳实践--如何正确使用Git Flow
我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用. Git的优点 Git的优点很多,但是这里只列出我认为 ...
- Git与Repo入门
版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文 ...
- Git Bash的一些命令和配置
查看git版本号: git --version 如果是第一次使用Git,你需要设置署名和邮箱: $ git config --global user.name "用户名" $ gi ...
- 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net
1. 注册一个账号和创建项目 先在git.oschina.net上注册一个账号和新建一个project ,如project name 是"myTest". 2.安装git sudo ...
- 史上最详细git教程
题外话 虽然这个标题很惊悚,不过还是把你骗进来了,哈哈-各位看官不要着急,耐心往下看 Git是什么 Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别 SVN是集中式版本控制 ...
- [版本控制之道] Git 常用的命令总结(欢迎收藏备用)
坚持每天学习,坚持每天复习,技术永远学不完,自己永远要前进 总结日常开发生产中常用的Git版本控制命令 ------------------------------main-------------- ...
- 【解决方案】Myeclipse 10 安装 GIT 插件 集成 步骤 图解
工程开发中,往往要使用到集成GIT ,那么下面说说插件安装步骤 PS:以Myeclipse 10 为例,讲解集成安装步骤. ----------------------main------------ ...
- git 命令
切换仓库地址: git remote set-url origin xxx.git切换分支:git checkout name撤销修改:git checkout -- file删除文件:git rm ...
- git亲测命令
一.Git新建本地分支与远程分支关联问题 git checkout -b branch_name origin/branch_name 或者 git branch --set-upstream bra ...
随机推荐
- HTML和CSS高级指南——定位详解
本文由大漠根据Shay Howe的<An Adavnced Guide to HTML & CSS>第二课<Detailed Positioning>所译,整个译文带有 ...
- #VSTS日志# 2015/12/10 – 终于可以删除工作项了
最近的更新不少,废话少说,直接上干货 定制工作项字段 本周的更新后,所有的用户都可以在vsts上直接给工作项添加字段了,具体内容包括– 添加新字段(日期,字符串,整形,数字)– 字段显示位置配置– 过 ...
- TechEd2013 Shanghai Hol Session PPT Share
上个月去上海参加了TechEd 2013,并且参与了Hands-on-Lab环节,作为讲师引导大家完成<Local DB in WP8>实验的内容.由于实验的内容采用MVVM架构完成,因此 ...
- Java Se: Logging 框架说明
Java Logging 用惯了log4j等日志工具,竟然不知Java还自带了个log工具.今天有空了就来了解一下. 先来看一个简单的例子: public class SystemTest { pri ...
- Javascript之旅——第十站:为什么都说闭包难理解呢?
研究过js的朋友大多会说,理解了js的原型和闭包就可以了,然后又说这些都是js的高级内容,然后就又扯到了各种神马的作用域...然后不少 人就会被忽悠的云里雾里...下面我也试着来说说闭包,看我说的这个 ...
- 优化SqlServer--数据压缩
数据压缩是对存储和性能优势的加强.减少数据库占用的磁盘空间量将减少整体数据文件存储空间,在一下几个方面增加吞吐量: 1.更好的I/O利用率,每个页面可以读写更多的数据. 2.更好的内存利用率,缓冲区可 ...
- Maven 打包涉及证书文件问题
当使用maven-assembly-plugin或者maven-shade-plugin打包时,如果涉及到证书文件,一定设置过滤,否则证书文件会被做修改.报异常: java.io.IOExceptio ...
- 组合使用css选择器
今天看到有网站使用.classA.classB类似的选择器,不知道是否有人和我一样没有用过,所以了解一下,以下记录. 一.用法介绍 在css中.classA.classB指的是一个元素,同时满足cla ...
- [转]C#网络编程(基本概念和操作) - Part.1
本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part1.aspx 引言 C#网络编程系列文章计划简单地讲述 ...
- 其实今天没有欲望..-MySQLi
hi 中午爽爽的游了会儿泳,但是下午把一拳超人看完了,竟然萌生不出学习的欲望了...强迫自己更新点东西吧,一会儿看书去. 1.MySQLi 二.MySQLi基于OOP的编程 2.1 使用解析 --基本 ...