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