Git 开发流程规范

由于团队和项目规模在逐步扩大,为了统一开发流程,减少版本冲突,也方便大家规范化开发,在这拟定git开发流程。大家必须按照流程进行代码拉取提交合并。

  • 分支命名规则
  1.   主干分支:master,该分支必须长期保持干净,可运行。不得直接在master分支进行开发, master分支只进行代码合并操作。
  2.   开发分支:develop,该分支为团队公用,开发人员一般从该分支拉取代码。
  3.   功能分支:feature, 该分支一般从develop分支拉出,如feature-multi_warning, 在该分支进行代码开发。
  4.   发行分支:release,在特性开发完毕之后,决定发布某一个版本,此时需要从develop分支上拉出一条release分支,例如release-1.0.0, 并将需要发布的特性从feature分支合并到release分支,随后针对release分支部署测试环境,测试和修改bug在该分支进行。
  5.   bug修复分支:hotfix, 线上版本有紧急bug时,从master切出hotfix分支,如hotfix-issue1128,在修改之后合并回master和develop分支。
  • 开发流程

创建主分支和开发分支

由项目管理员创建项目,并将master分支和develop分支推送到远端.

  • 主分支和开发分支
# project setup, files add

# add .gitignore file

git init                   # 初始化项目

git push -u origin master  # 推送到远端master分支

git checkout -b develop    # 从master切分出dev分支,并推送到远端

git push -u origin develop
  • 本地功能性开发

开发人员从远端拉取develop分支,进行功能开发

本地功能性开发

git clone  /path/to/git-repo               # 克隆项目

git checkout -b develop                    # 切换到dev分支

git checkout -b feature-[name_of_feature]  # 切换到功能开发分支

# 进行功能开发,在阶段性完成之后,将代码合并回本地的dev分支
git checkout develop


# 确认分支代码为最新
git pull origin develop


# 注意,一定要添加--no-ff 标记
git merge --no-ff feature-[name_of_feature]


# 如果确认feature分支已经不需要了可以删除
# git branch -d feature-[name_of_feature]


# 代码提交到远端分支
git push origin develop
  • 版本发布准备

release分支用来支持新的生产环境发布的准备工作。可以做小幅度的问题修复以及发布时的meta数据(版本号、发布日期)。

在几乎完成所有预期的开发时,从develop分支派发出release分支。

release

git checkout -b release-1.2 develop # 切到release 分支

# 做发版的相关工作

git commit -a -m "版本1.2布"


# release 发版成功后,将release功能合并回master, 并且为这次提交打一个tag

# 作为版本历史的参考,并且将release分支产生的改动合并回develop

git checkout master

git merge --no-ff release-1.2 # 合并release

git tag -a 1.2              #tag标签

git push origin master      #推送到远端

git checkout develop        #切到dev分支

git merge --no-ff release-1.2 # 合并release分支

git push origin develop
  • bu紧急g修复

当主版本有比较严重bug需要修复,且develop分支还不稳定。从master分支切分出hotfix分支来进行修补工作。

hotfix

git checkout -b hotfix-issue121 master

# 修改bug

# 版本更新工作
git commit -m "bug fix"      # 提交代码

git checkout master          # 切换到master分支

git merge --no-ff hotfix-issue121 # 合并fix

git tag -a 1.2.1 -m "修复xxxx"            # 更新版本

git push

git checkout develop         # 切换到dev分支

git merge --no-ff hotfix-issue121  # 合并fix

git branch -d hotfix-1.2.1    # 删除hotfix分支
  • 工具和参考文件:

推荐使用命令行操作。https://www.sourcetreeapp.com/ 

  • gitignore文件规范

java项目.gitignore 样例

.gitignore

# intellij

.idea

*.iml



# eclipse

.metadata

bin/

tmp/

*.tmp

*.bak

*.swp

*~.nib

local.properties

.settings/

.loadpath

.recommenders


# mpeltonen/sbt-idea plugin

.idea_modules/


# JIRA plugin

atlassian-ide-plugin.xml



# log files

*.log



# package files

*.jar

*.war

*.ear

*.zip

*.tar.gz

*.rar



# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml

hs_err_pid*


target/

*.class

猜你喜欢

转载自blog.csdn.net/Byd_chao/article/details/82822024