您的位置:首页 > 其它

Git分支管理规范和解析

2017-06-15 09:32 169 查看
quick_start

why_git

仓库和分支管理
远程和本地
origin远程仓库

本地仓库

分支管理
主分支master

主分支developdev

主分支releasetest

支持分支feature

支持分支hotfix

实战
参与新项目

新需求开发

提交修改代码到本地分支

合并到dev分支

合并冲突merge

git命令

git_GUI

参考

quick_start

安装git工具可以使用git命令行,启动命令行工具 git官网下载

ssh-keygen -t rsa -C “youremail”

vim ~/.ssh/id_rsa.pub 将公有钥匙设置到 http://xxx.xxx.xxx.xxx/profile/keys

cd /f/gitProject

git clone git@xxxxxxxxx.git

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进行版本控制

仓库和分支管理

远程和本地



origin远程仓库

上图中origin是团队的中央仓库,整个团队共同维护,每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理

每个开发者都可以从远程clone代码并且新建本地分支和push新建分支到远程仓库,并且也可以从其他开发者的远程分支fetch代码。

本地仓库

上图中的alice和bob等都是本地分支,本地可以通过clone远程分支或者init建立本地仓库,这个目录中有一个“.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

实战

参与新项目

cd /f/gitProject

git clone git@xxxxxx.git

新需求开发

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 “xxx@xxx.com” 配置邮件

* git clone git@xxxxxx.git 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功能比较成熟,但是注册安装需要翻墙

参考

想要深入理解git 参考 git doc

http://nvie.com/posts/a-successful-git-branching-model By Vincent Driessen

https://git.wiki.kernel.org/index.php/GitSvnComparsion

https://git-scm.com/docs

https://gist.github.com/guweigang/9848271
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git 管理 分支管理