[Tool] Git 使用 与 Git Flow
目录
简介
- Git是目前世界上最先进的分布式版本控制系统(没有之一)。
- Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!
- 很遗憾,接触2年+的Git,今天才稍微深入分析。
命令
git config- 配置git
git config --global user.name "Never、C"// 配置用户名git config --global user.email cao@never.cn// 配置邮箱
git init- 创建版本库
git status- 查看 工作区(untracked) 和 暂存区(stage) 状态
git status -s// 精简模式查看
git addgit add . | git add --all// 添加当前所有修改到暂存区
git resetgit reset HEAD .// 将暂存区文件移除,不修改文件本身内容git reset --hard xx// 还原到历史提交记录git reset --merge// 撤销本次合并git reset --hard HEAD^// 回到上个版本,会修改文件内容
git commit- 提交到版本库
git commit -m xx// 带注释提交
git checkout- 从xx处检出文件
git checkout -- .// 将工作区文件还原为暂存区中最近的内容(暂存区无,则与版本库一致)git checkout xx// 切换到分支xxgit checkout -b xx// 创建并切换到分支xx
git log- 查看历史记录
git log --oneline// 单行显示git记录git reflog// 查看'未来'操作
git merge- 合并分支
git merge xx// 从xx分支合并到当前分支
git stash- 储藏
git stash pop// 恢复储藏的修改git stash list// 显示stash列表
git tag- 版本标签
git tag// 查看版本所有标签git tag -m "xx" v1.0// 创建版本为1.0的标签,注释为xx
git revert- 回到历史
git revert xx// 生成新的提交来回到历史记录xx的父级
git push- 推送到远程版本库
git push --tags// 版本库推送到远程库上
git rm- git rm --cached
- git rm --cached -r . // 清空暂存区
- git rm --cached
git rebase- git merge 会生成一个新得合并节点,而rebase不会
git fsck- 检查当前版本库信息是否存在错误
工作流
- 简介
- 软件开发模型有常见的瀑布模型、迭代开发模型、以及最近出现的敏捷开发模型等不同的模型。
- Git Flow重点解决的是由于源代码在开发过程中的各种冲突导致开发活动混乱的问题。
- 分支
- Git Flow模型中定义了主分支和辅助分支两类分支。
- 主分支
- 主分支是所有开发活动的核心分支。所有的开发活动产生的输出物最终都会反映到主分支的代码中。主分支分为master分支和development分支。
- master
- master分支上存放的应该是随时可供在生产环境中部署的代码(Production Ready state)。当开发活动告一段落,产生了一份新的可供部署的代码时,master分支上的代码会被更新。同时,每一次更新,最好添加对应的版本号标签(TAG)。
- develop
- develop分支是保存当前最新开发成果的分支。通常这个分支上的代码也是可进行每日夜间发布的代码(Nightly build)。因此这个分支有时也可以被称作“integration branch”。
- 规范
- 仅在发布新的可供部署的代码时才更新master分支上的代码
- 每当有代码提交到master分支时,我们可以使用Git Hook触发软件自动测试以及生产环境代码的自动更新工作。
- 辅助分支
- 辅助分支主要用于组织软件新功能的并行开发、简化新功能开发代码的跟踪、辅助完成版本发布工作以及对生产代码的缺陷进行紧急修复工作。这些分支与主分支不同,通常只会在有限的时间范围内存在。
- 辅助分支包括:
- 用于开发新功能时所使用的feature分支;
- 用于辅助版本发布的release分支;
- 用于修正生产代码中的缺陷的hotfix分支。
- feature(topic分支)
- 从develop分支发起
- 合并回develop分支 或 被抛弃
- 命名:feature-*
- 该分支可以保存在开发者自己的版本库,不强制要求在主版本库中。
- release
- 从develop分支派生
- 合并回develop 或 master分支
- 命名:release-*
- 用于发布新的产品,允许小的修正,准备发布说明信息。通过在release分支处理,可以让develop分支空闲出来。
- hostfix
- 从master分支派生
- 合并回master 或 develop分支
- 命名:hostfix-*
- 当生产环境遇到异常或严重问题,从master指定的tag派生hotfix分支修复。能够让负责新功能和bug修复人员并行工作。
[Tool] Git 使用 与 Git Flow的更多相关文章
- [Tool] 源代码管理之Git
本节目录 什么是Git 什么是GitHub 安装Git GitHub之Repository GitHub之托管页面 常用Git 命令 什么是Git 由于现在的开发多人协同办公,因此出现源代码管理工具 ...
- Git:Git初体验——Git安装配置
作为即将成为一个程序员的男人,一直在听别人说Git多好多好,之前也随便了解了一些,但是始终没有决心去学会.现在大四了,只有毕设和一门开学六七周只去过一次课的全员必修课外,也没有什么事情做,何不去做这些 ...
- Git 笔记二-Git安装与初始配置
git 笔记二-Git安装与初始配置 Git的安装 由于我日常生活和工作基本上都是在Windows上,因此此处只说windows上的安装.Windows上的安装和其他程序一样,只需要到http://g ...
- 1 起步-Pro Git---VCS比较、git基本原理、git配置
本地版本控制系统 集中化的版本控制系统 诸如 CVS,Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务 ...
- Git版本控制:Git高级教程
http://blog.csdn.net/pipisorry/article/details/50669350 Git有很多命令行参数,使用起来非常方便.可以运行 man git log ,来看一下这 ...
- Git 学习之git 分支(三)
Git 分支 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的 ...
- Git 学习之git 起步(一)
起步 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章,你就会明白为什么 Git ...
- 项目开发中git常用命令、git工作流、git分支模型
#新建代码库git init # 在当前目录新建一个Git代码库git init [project-name] # 新建一个目录,将其初始化为Git代码库git clone [url] # 下载一个项 ...
- git init和git init -bare区别
1 Git init 和 git init –bare 的区别 用"git init"初始化的版本库用户也可以在该目录下执行所有git方面的操作.但别的用户在将更新push上来的 ...
随机推荐
- java web (j2ee)学习路线 —— 将青春交给命运
RESON TO DO JAVA WEB:1.JAVA WEB(企业级) 2.Android和iOS过于火爆并且不兼容 一.JAVA WEB开发需要的知识储备 1. 基本的网页设计语言:H ...
- 跨交换机相同vlan内的通信(trunk模式)
当一个公司的小型局域网内部,处于不同楼层的主机处在同一个虚拟局域网内,连接到不同的交换机上,这时候就需要相同虚拟局域网内部的主机进行跨交换机进行通信. 通过设置交换机之间相连接的端口开启trunk模式 ...
- oracle job执行失败
创建job任务:declare test_job number;begin dbms_job.submit(test_job, 'prc_job_test;', sysdate, 'sysdate+1 ...
- jgs--多线程和synchronized
多线程 多线程是我们开发人员经常提到的一个名词.为什么会有多线程的概念呢?我们的电脑有可能会有多个cpu(或者CPU有多个内核)这就产生了多个线程.对于单个CPU来说,由于CPU运算很快,我们在电脑上 ...
- java虚拟机--jvm client模式与server模式的区别
JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升.JVM如果不显式指定是-Server模式还是-clien ...
- 远程登录aws
AWS的EC2服务器是用密钥来认证的,在创建instance时,会提示,创建一个key pair,同时会提示下载一个xxx.pem的密钥文件到本地硬盘.下面是通过SecureCRT连接到EC2的操作步 ...
- Servlet路径映射
Serlvlet路径映射 当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url. 容器默认请求的是一个Servlet,所以不会直接根据 ...
- 我必须得告诉大家的MySQL优化原理
本文转载自http://www.jianshu.com/p/d7665192aaaf 说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT *.不使用NULL字段.合理创建索引.为字段 ...
- (HTTPS)-强制 SSL (HTTPS)Filter
汗,无知真可怕,Servlert规范中已经有自动跳转到保护页面(Http - Https)的方法了: web.xml <security-constraint> ...
- 并串转换FPGA电路结构的探讨
如题,并串转换时FPGA设计里,一个很常用的模块,这里有一个小的探讨. 一般情况下我们可以使用一个计数器与数据选择器进行并串转换,如下图的的结构.这个结构通过计数器不断的改变数据选择器的地址端,从而使 ...