Git源代码管理规范

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
2. 提交修改
>> git add 后就从修改变为暂存
>> git commit 后就从暂存变为提交。
3. 回溯
改错了,不过还没有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
4. 创建分支
查看分支
>> git branch
切换分支
>> git checkout [branch name]
创建分支(在当前代码的基础上)
>> git branch [branch name]

5. 合并分支
先检出目标分支再把其他分支合并进去
>> git checkout [branch name]
>> git merge [other_branch]
6. 删除分支
>> git branch -d [branch name]
(不能删?用这个!)
>> git branch -D [branch name]
7. 标签管理
>>git tag v1.0
8. 远程操作
克隆远程库
>> 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
2. 功能点开发
有新的需求或功能点需要开发时, 从最新develop分支中拉出一个feature分支
>> git checkout -b [feature name]
完成feature开发后需要对feature分支进行合并操作
>> git checkout develop
>> git merge [feature name]
3. 处理冲突
当合并分支出现冲突时,需要手动将文件冲突的部分进行修改。对修改后的文件保存并重新提交。
4. 产品发布
当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]
5. 线上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 <版本库的网址>
该命令会在本地主机生成一个目录,与远程主机的版本库同名。
2. 管理主机名
为了便于管理,Git要求每个远程主机都必须指定一个主机名。
不带选项的时候,git remote命令列出所有远程主机。
3. 将更新取回本地
>> 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
4. 取回更新同时合并到本地
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
示意如下:

tag-V1.0.0-R---------------产品发布版本tag

提测Tag格式为:
tag++【-V】+【版本号】+【-B01】 ---- 产品版本提测tag
示意如下:

tag-V1.0.0-B01---------------产品版本提测tag

如发布Tag错误,不允许删除,需按照正确的发布继续演进Tag,格式为:
tag+【-V】+【版本号】+【-R01、02、03】 ---- 发布版本tag
示意如下:

tag-V1.0.0-R01---------------产品发布版本tag

Develop版本开发分支命名要求
Dev+【-V】+【版本号】,版本号格式为A.B.C;

Dev-V1.0.0---------------产品版本开发主线
Dev -V1.0.1---------------修复发布bug的版本
Dev -V1.1.0---------------添加feature1的版本
Dev -V1.1.1---------------修改feature1的bug的版本

编辑于 2022-06-02 23:25