Git分支管理规范和解析

quick_start

  • 安装git工具可以使用git命令行,启动命令行工具 git官网下载
  • ssh-****** -t rsa -C “youremail”
  • vim ~/.ssh/id_rsa.pub 将公有钥匙设置到 http://xxx.xxx.xxx.xxx/profile/keys
  • cd /f/gitProject
  • git clone [email protected]
  • git branch -a 查看自己所在分支和所有远程分支
  • git checkout dev 切换到dev开发分支
  • git branch feature/{yourname}_{workdetail} 在dev上创建自己的开发分支
  • 随便修改一个文件,并增加一个类文件
  • git status 查看修改的文件状态
  • git diff 查看修改内容
  • git add . 暂存修改的文档
  • git commit -m ‘my first commit’ 提交修改内容
  • git push origin feature/{yourname}_{workdetail} 提交到远程的自己的开发分支
  • git checkout dev 切换到自己的父分支
  • git pull origin dev 跟新本地的dev分支
  • git checkout feature/{yourname}_{workdetail} 切换到自己分支
  • git merge dev 将dev上别人的修改合并
  • git status 查看是否有修改,如果有修改执行git commit -a
  • git checkout dev 切换到自己的父分支
  • got merge feature/{yourname}_{workdetail}将自己的修改合并到大家共同的开发父分支

why_git

  • 把在CVS/SVN传统中很高级的话题“分支”、“合并”入门化,成为基础操作
  • *仓库定义为origin,克隆代码到本地之后对本地所有分支有update,commit权限,同样不联网状态下也可以commit代码
  • 速度更快
  • 分布式但是又集中化管理
  • 更多对比和好处缺点参考 GitSvnComparison

git是一个版本控制系统,不仅可以控制代码,任何文件都可以通过git进行版本控制

仓库和分支管理

远程和本地

Git分支管理规范和解析

origin远程仓库

上图中origin是团队的*仓库,整个团队共同维护,每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理
每个开发者都可以从远程clone代码并且新建本地分支和push新建分支到远程仓库,并且也可以从其他开发者的远程分支fetch代码。

本地仓库

上图中的alice和bob等都是本地分支,本地可以通过clone远程分支或者init建立本地仓库,这个目录中有一个“.git”的文件夹。
这个文件夹非常重要,所有的版本信息,更新记录,以及Git进行仓库管理的相关信息全部保存在这个文件夹里面。不要修改/删除其中的文件,以免造成数据的丢失。

分支管理

Git分支管理规范和解析
上图涵盖了开发过程中各种情况的分支流程

(主分支)master

  • 线上分支:时刻保持与线上代码一致,理论上是每次master更新后,都需要通过自动化部署工具进行上线发布

(主分支)develop(dev)

  • 开发分支:任何迭代需求分支都以这个分支为父分支进行建立

(主分支)release(test)

  • 预发布分支:开发完成和将一个迭代的所有修改合并到该分支供测试人员测试

(支持分支)feature

  • feature分支是短期的一个需求开发过程中创建的一个特性分支,理论上每一个需求可以细分成一个特性分支,一次迭代可能会细分出5-6个特性分支
  • 继承分支 dev
  • 合并分支 dev
  • 命名规范:除了master,develop,,hotfix-*,建议新建文件夹方式feature/xxxx

(支持分支)hotfix

  • hotfix分支是为了解决一个紧急的线上问题而建立的分支
  • 继承分支 master
  • 合并分支 dev master
  • 命名规范:除了master,develop,feature-*,建议新建文件夹方式hotfix/xxxx

关于分支管理可以详细参考这篇文章a-successful-git-branching-model
译文:https://wenku.baidu.com/view/2450c7fdaef8941ea76e055f.html

实战

参与新项目

新需求开发

  • git branch -a 查看自己所在分支和所有远程分支
  • git checkout dev 切换到dev开发分支
  • git branch feature/{yourname}_{workdetail} 在dev上创建自己的开发分支

提交修改代码到本地分支

  • git status 查看修改的文件状态
  • git diff 查看修改内容
  • git add . 暂存修改的文档
  • git commit -m ‘my first commit’ 提交修改内容

合并到dev分支

  • git checkout dev 切换到自己的父分支
  • git pull origin dev 跟新本地的dev分支
  • git checkout feature/{yourname}_{workdetail} 切换到自己分支
  • git merge dev 将dev上别人的修改合并
  • git status 查看是否有修改,如果有修改执行git commit -a
  • git checkout dev 切换到自己的父分支
  • got merge feature/{yourname}_{workdetail}将自己的修改合并到大家共同的开发父分支

合并冲突merge

  • 当在合并分支出现冲突的时候,建议使用idea等可视化工具进行合并
  • 例如idea右键工程->Git->Resolve Conflicts->弹框中点击merge->然后根据情况选择接受服务器版本还是本地版本->apply/abort

git命令

git的命令非常多 基本常用的有:
* git config –global user.name “xxx” 配置用户名
* git config –global user.email “[email protected]” 配置邮件
* git clone [email protected] clone远程仓库
* git branch 查看当前分支
* git checkout dev 切换到dev分支
* git pull origin dev 拉取远程dev分支并merge到当前分支
* git branch feature/reward 创建需求reward分支
* git status 查看当前版本状态(是否修改)
* git diff 查看修改内容
* git commit -m ‘xxx’ 提交
* git log -5 显示5行日志

更多可以参考官方手册 git命令手册

git_GUI

git 官网 提供了很多git可视化工具连接,随便选用一个使用即可。
source tree功能比较成熟,但是注册安装需要*

参考