git开发指南
分支目录
线上分支命名-意义
-
master
正式环境 -
dev
开发环境 -
beta
测试环境 -
release
已发布分支
本地分支命名-意义
-
feature
新功能开发 -
bugfix
修复测试环境中,测试同学提出的bug -
hotfix
紧急修复正式环境
本地分支命名规范:(后面xxx推荐使用带功能描述的英文组合)例如模块名称,功能名称
bugfix
:bugfix/xxx
hotfix
:hotfix/xxx
feature
:feature/xxx
分支定义
matser(正式版本)
只负责线上部署,只接受hotfix
、release
的分支合并请求,不允许把develop
、feature
分支直接合并
feature(功能开发)
每次开发新功能前,通过checkout dev
后,本地生成一个新的feature
本地分支进行开发,完成后推送到线上,等待发起合并请求。
dev(开发)
开发的主分支,每个开发人员应该在其分支下checkout
一个新的本地feature
分支进行开发,完成后推送本次的功能分支到线上,向dev
分支提交合并请求,合并成功后删除线上的功能分支(线上功能)
beta(测试)
测试主分支,由测试同学负责管理,开发同学不做任何合并请求操作
bugfix(测试缺陷修复)
功能提测后,测试同学提了某个、某些缺陷,由开发同学从beta
分支checkout
一个新的本地bugfix
分支进行bug修复,完成后,推送本次缺陷修复分支到线上,向dev
、beta
分支提交合并请求,合并成功后删除线上的功能分支(线上功能)
release(大版本发布稳定分支)
该次迭代的beta环节全通过后,提交合并请求到release分支,等待线上部署。
hotfix(热修复)
只负责线上环境的bug修复,只与master
分支有关联,不允许其它分支直接合并,请使用合并请求与master
合并
commit 前缀
每次提交建议添加关键词前缀,用于指示本次改动的主题。建议采用的提交规范:
-feat: 新功能(feature)
-fix: 修补bug
-docs: 文档(documentation)
-style: 格式(不影响代码运行的变动)
-refactor: 重构(即不是新增功能,也不是修改bug的代码变动)
-test: 增加测试
-chore: 构建过程或辅助工具的变动
例如:
git commit -m 'feat: 登录模块'
案例参考
开发功能
git checkout dev
git pull origin dev
git checkout -b feature/login
# 开发完指定功能...
git add *
git commit -m 'feat: 新增登录功能'
git push -u origin feature/login
git checkout dev // 确认提交成功后, 切换到dev分支。
git merge feature/login// 合并feature/login 到dev
git branch -d feature/login // 确认合并成功并且无冲突后,删除本地分支
# 管理员合并代码。
# 开发下一个功能。roll。。。
修复beta过程中的代码
git checkout beta
git pull origin beta
git checkout -b bugfix/new-bug
git add *
git commit -m 'fix: 登录提示'
git push -u origin bugfix/sm-new-bug
发布新版本
# 合并到预发布分支
git pull
git checkout -b release/v3.1 develop
git push -u origin release/v3.1
紧急修复线上bug
git checkout release
git pull origin release
git checkout -b hotfix/hot-bug release
# ...这里省略正常的add、commit流程
git push -u origin hotfix/hot-bug
一些可能会用到的指令
更新线上分支列表
git remote update origin --prune
git branch -m feature/login feature/changename // 更换分支名称;
子模块
离线模式多用户开发
问题: 在项目禁止被放到线上的时候, 如何实现多人开发?
建立多用户分支
例如:
dev
feature-a
feature-b在用户单独分支进行开发,开发完毕后,把代码合并到dev内。然后进行以下命令。
git bundle create repo.bundle HEAD dev
这里会创建一个repo.bundle文件。
这时候另一个用户拿到这个文件。
把它放到项目根目录下上一级文件内。
git pull ../repo.bundle
拉取更新代码。
当没有冲突后,把dev合并到自己当前分支内。
这样就完成了离线多用户开发了。
更换git远程地址
git remote rm origin 删除远程地址
git remote add origin [git地址] 添加远程地址
git remote -v 查看远程地址
修改内容
回退版本
git reset --hard commit_id
给git仓库添加多个url地址
有时候,我们的远程仓库不止一个,我们先下的一份代码,不止需要提交到一个仓库,这时候我们可以使用git的添加多个远程地址的方式,一次Push就可以提交到多个地方。
首先,先增加第一个地址 git remote add origin <url1>
然后增加第二个地址 git remote set-url --add origin <url2>
增加第三个地址 git remote set-url --add origin <url3>
....依次类推
这样就完成了添加多个地址到origin库中了, 以后只要使用git push origin master 就可以一次性push到3各库里面了(使用git push也可)
git remote -v:
查看远程地址
注意
使用git push origin master时,你可以push到origin的多个url地址,
但是使用 git pull时,只能拉取origin里的一个url地址(即fetch-url),这个fetch-url默认为 你添加的到origin的第一个地址,
如果你想更改,只需要更改config文件里,那三个url的顺序即可,fetch-url会直接对应排行第一的那个utl连接。