Git源代码管理规范

Git源代码管理规范

杰子学编程 121 2022-06-02

Git源代码管理规范

一、 总则

  1. 级别说明:[1]强制 [2]建议 [3]参考。

二、 分支管理

使用git进行源代码管理,一般将某个项目的所有分支分为以下几条主线:
分支管理

  1. Master
    存放的是随时可供在生产环境中部署的代码。当开发活动告一段落, 产生了一份新的可供部署的代码时,master 分支上的代码会被更新。同时,每一次 更新,都添加对应的版本号标签(tag)。
  2. Develop
    保存当前最新开发成果的分支。通常这个分支上的代码也是可进行 每日 / 夜间发布的代码。当 develop 分支上的代码已实现了软件需求说明书中所有的功能,通过了所有的测试,并且代码已经足够稳定时,就可以将所有的开发成果合并回 master 分支了。
  3. Feature
    用于开发新功能时所使用的分支。从 develop 分支发起 feature 分支, 代码必须合并回 develop 分支。此分支甚至可以仅仅保存在开发者自己的代码库里而不提交。
  4. release
    用于辅助版本发布的分支。从 develop 分支派生,必须合并回 develop 分支和 master 分支。此分支是为发布新的产品版本而设计的,当 develop 上开发的功能基本成形且可以发布的时候,就可以派生出 release 版本。这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息,如版本号、发布时间、编译时间等。
  5. Hotfix
    用于修正生产代码中有缺陷的分支。从 master 分支派生且必须合并回master 分支和 develop 分支。此分支一般是计划外的分支,但最终输出和 release 分支类似,都可以产生一个新的可供在生产环境部署的软件版本。当生产环境遇到了异常情况或者需要紧急修复的 Bug 时,就可以从 master 分支上指定的 tag 版本派生hotfix 分支来组织代码的紧急修复工作。

三、常用命令

  1. 创建工程

git init

  1. 提交修改

git add 后就从修改变为暂存
git commit 后就从暂存变为提交。

  1. 回溯
    改错了,不过还没有git add

git reset --hard

彻底回退版本,连本地文件都会被回退到上个版本的内容,本地新修改的内容会全部丢失。

改错了,已经git add

git reset -q [files]
(其实就是 git add 的反向操作)
改错了,已经git commit
git reset --soft HEAD^
(其实就是 git commit 的反向操作)
已经git commit,忘记写注释(PR)或者漏提交了部分文件
如果添加注释可以直接执行命令 git commit --amend,填写注释保存
如果添加文件先执行 git add 后执行 git commit --amend

  1. 创建分支
    查看分支

git branch
切换分支
git checkout [branch name]
创建分支(在当前代码的基础上)
git branch [branch name]

  1. 合并分支
    先检出目标分支再把其他分支合并进去

git checkout [branch name]
git merge [other_branch]

  1. 删除分支

git branch -d [branch name]
(不能删?用这个!)
git branch -D [branch name]

  1. 标签管理

git tag v1.0

  1. 远程操作
    克隆远程库

git clone
定义远程库
git remote
从远程库取回更新
git fetch
从远程库取回更新并合并
git pull
推送至远程库
git push

四、 操作流程(本地)

  1. 准备工作
    初始化目录

git init
git add readme.md
git commit -m ‘master init’
然后从master分支中拉出develop分支
git checkout -b develop

  1. 功能点开发
    有新的需求或功能点需要开发时, 从最新develop分支中拉出一个feature分支

git checkout -b [feature name]
完成feature开发后需要对feature分支进行合并操作,合并前进行代码评审,代码评审通过后,进行合并操作。
git checkout develop
git merge [feature name]

  1. 处理冲突
    当合并分支出现冲突时,需要手动将文件冲突的部分进行修改。对修改后的文件保存并重新提交。
  2. 产品发布
    当develop分支已经达到了一个可以发布的状态,将最新的develop分支拉出来成为一个release分支

git checkout -b release
假设需要一些环境配置,新建配置文件并提交
git add release.config
git commit -m ‘release1’
当遇到一些预发环境下的bug,这个时候我就直接在release分支下进行修复演进,如果bug问题很大,则需要重新并入develop中,拉出新的feature进行开发重构。
如果预发一切正常,需要将release分支同时并入master分支和develop分支,master分支供线上发布,develop分支供下次开发演进。
git checkout master
git merge [release name]
git checkout develop
git merge [release name]

  1. 线上bug热修复
    当碰到一些线上意想不到的bug,需要紧急修复时,就直接从master分支拉出hotfixes分支进行修复。

git checkout master
git checkout -b [hotfix name]
bug修复完毕,测试通过后我们将分支合并到master和develop中去。
git checkout develop
git merge [hotfix name]
git checkout master
git merge [hotfix name]

三、 远程操作
远程操作的5个常用命令
l git clone
l git remote
l git fetch
l git pull
l git push

  1. 从远程主机克隆一个版本库

git clone <版本库的网址>
该命令会在本地主机生成一个目录,与远程主机的版本库同名。

  1. 管理主机名
    为了便于管理,Git要求每个远程主机都必须指定一个主机名。
    不带选项的时候,git remote命令列出所有远程主机。
  2. 将更新取回本地

git fetch <远程主机名>
默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。
git fetch <远程主机名> <分支名>
git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。
取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建一个新的分支。
git checkout -b newBrach origin/master
也可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支。
git merge origin/master
或者
git rebase origin/master

  1. 取回更新同时合并到本地
    git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。

git pull <远程主机名> <远程分支名>:<本地分支名>
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin next
上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。
git fetch origin
git merge origin/next
三、Tag标签规范
一、git tag规范
标准发布Tag格式为:
tag+【-V】+【版本号】+【-R】 ---- 发布版本tag
版本号含义:
第一位: 1 -> 架构改动
第二位: 0 -> 功能改动
第三位: 0 -> 两周迭代
示意如下:
无法复制加载中的内容
提测Tag格式为:
tag++【-V】+【版本号】+【-B01】 ---- 产品版本提测tag
示意如下:
无法复制加载中的内容
如发布Tag错误,不允许删除,需按照正确的发布继续演进Tag,格式为:
tag+【-V】+【版本号】+【-R01、02、03】 ---- 发布版本tag
示意如下:
无法复制加载中的内容
Develop版本开发分支命名要求
Dev+【-V】+【版本号】,版本号格式为A.B.C;


# Java # Git