欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Git 开发流程规范

程序员文章站 2022-06-12 18:14:06
...

由于团队和项目规模在逐步扩大,为了统一开发流程,减少版本冲突,也方便大家规范化开发,在这拟定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