月度归档:2016 年十月

Git 版本管理

Git是一款免费、开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。

Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快。

Git flow 工作流

  • master 主要分支,存放对外发布的版本,任何时候这个分支,都是稳定的分布版
  • develop日常开发,存放最新的开发版
  • release  预发布分支
  • hotfix  紧急修复分支
  • feature 功能分支

master分支

最基础,最稳定的分支。存放对外发布的版本,任何时候这个分支,都是稳定的分布版,即可以随时对外发布的分支。****任何时候,不能再master分支上做代码修改***

develop分支

开发分支,最初从master复制过来。日常存放的是最新的开发,也是随时准备生成release版本的代码。****除非紧急情况,否则不能再develop分支上做代码修改***

release分支

预发布分支,是从develop clone过来。准备合并到master分支的代码。****除非紧急情况,否则不能再release分支上做代码修改***

feature分支

功能分支,从develop clone过来。主要用于在项目新增加一个功能的时候产生,等功能开发、测试完成后,合并到develop,对应的功能分支删除。****功能分支要每天合并develop代码***

hotfix分支

紧急修复分支,主要在线上版本出现问题,从master派生过来,问题修复完成,hotfix分支功能关闭,代码合并到master、develop。

这几个分支关系,如下图:

git-model@2x

 

git 常用命令

  • 克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库
  • 提交(commit):将暂存文件上传到本地仓库
  •  检出(checkout):切换不同分支
  • 添加(add):添加文件到缓存区
  • 暂存(git stash):保存工作现场
  • 重置(reset):回到最近添加(add)/提交(commit)状态
  • 标签(tag):给项目增添标签
  • 合并(merge):将多个同名文件合并为一个文件,该文件包含多个同名文件的所有内容,相同内容抵消
  • 抓取(fetch):从远程仓库获取信息并同步至本地仓库
  • 拉取(pull):从远程仓库获取信息并同步至本地仓库,并且自动执行合并(merge)操作,即 pull=fetch+merge
  • 推送(push):将本地仓库同步至远程仓库,一般推送前先拉取一次,确保一致
  •  分支(branch):创建/修改/删除分枝