“git使用最佳实践”
git常规操作
1、克隆
git clone http://192.168.2.174/front-end/erp.git
2、拉取远程仓库其他分支
git checkout -b [本地分支名称] origin/[远程分支名称]
3、本地新建分支并切换到该分支
git checkout -b [分支名称]
4、关联到远程仓库
git remote add origin [仓库地址]
5、本地分支推送到远程仓库
git push --set-upstream origin [远程分支名称]
git push
6、合并代码
git merge [其他分支名称]
7、取消合并(代码有冲突且不容易解决时可使用)
git merge --abort
8、拉取
git pull
9、推送
git push
10、删除本地分支
git branch -D [分支名称]
11、删除远程分支(慎用)
git push origin --delete [分支名称]
12、查看本地和远程分支
git branch -a
13、放弃本地某个文件修改(未使用 git add 缓存代码)
git checkout -- abc.vue
14、放弃本地所有文件修改(未使用 git add 缓存代码)
git checkout .
15、放弃本地某个文件修改(已使用 git add 缓存代码)
git reset HEAD abc.vue
16、放弃本地所有文件修改(已使用 git add 缓存代码)
git reset HEAD .
17、放弃本地所有文件修改(已使用 git commit(git cz))
git reset HEAD^
18、回退版本
git reset --hard HEAD^
git reset --hard commitid
19、查看当前仓库地址
git remote -v
20、修改远程分支名称(3步)
git branch -m [原分支名] [新分支名] //修改本地分支
git push origin [远程分支名] //删除远程分支
git push --set-upstream origin [新分支名] //新增远程分支
git分支管理规范
| 分支 | 说明 | 代码来源 | 目标分支 | 对应权限 | 代码输入方式 | 命名规则 |
|---|---|---|---|---|---|---|
| prod | 主干分支,通常作为代码基线,所有代码最终会合并到此分支,上线也基于此分支打tag来完成 | uat、hotfix无 | 开发经理 | mergerequest | prod | |
| dev | 开发分支,用于开发新版本需求 | prod | test | 开发者 | 开发者 | dev_{version},如:dev_1.5.1 |
| test | 测试分支,用于功能测试 | dev | uat | 开发经理、开发者 | merge | test |
| uat | test | prod | 开发经理、开发者 | merge | uat | |
| hotfix | 修复分支,用于正式版本的紧急修复 | prod | prod | 开发者 | 开发者 | hotfix_{日期},如:hotfix_20200831 |
git版本开发流程
代码提交规范
在没有规范的情况下,开发人员的 commit 信息是常常是随意的,这就导致 commit 信息显的很无用。可是当你在做git log、code review、编写changelog等情况时,良好的 commit 规范就显的尤为重要。
后端:
feat: 新增/修改一个页面/功能,接口联调
fix: 修复Bug,后面最好把bug的编号填到上
docs: 修改了文档 README CHANGELOG
style: 修改了页面的css样式(不改变代码逻辑)
refactor:代码重构( 即不是新增功能,也不是修改 bug 的代码变动)
perf: 改善性能
test: 测试用例,单元测试,集成测试。
build: 变更项目构建或外部依赖(例如scopes: webpack、gulp、npm等)
ci: 更改持续集成软件的配置文件和package中的scripts命令,例如scopes: Travis, Circle等
chore: 改变构建流程,或者增加依赖库,工具(辅助工具)等变
revert: 回滚到上一个版本(代码回退)
加简要描述本次改动,请遵循下面格式: 改动的哪个方法,新增/修改/删除什么功能,
前端:
因为不同的项目本身的构建方式的不同,commitizen 支持不同适配器的扩展,从而去满足不同的构建需求的。我们选择使用cz-conventional-changelog的构建标准
安装 (全局安装)
在全局添加commitizen 的依赖
npm install commitizen -g // npm全局安装
npm install cz-conventional-changelog -g // commitizen的构建标准
// 可以运行 npm ls -g -depth=0 查看是否成功安装
生成changelog.md
npm install conventional-changelog-cli -g // 生成CHANGELOG.md 的辅助工具,只做提交不需要安装,如果需要生成变更日志则需要安装,
快捷指令 可以在package.json scripts中添加快捷指令
"genlog": "conventional-changelog -p eslint -i CHANGELOG.md -s -r 0"
package.json中添加配置相应的配置 commitizen才能生效
"config": {
"commitizen": {
"path": "cz-conventional-changelog"
}
}
使用
安装并添加完后,我们便可以使用 git cz 命令替换 git commit 来使用了。我们修改一个文件并 git add 后,通过 git cz 提交message信息
git add .
git cz
git cz进行commit操作
Select the type of change that you're committing: (Use arrow keys)
❯ feat: A new feature
fix: A bug fix
docs: Documentation only changes
style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
refactor: A code change that neither fixes a bug nor adds a feature
perf: A code change that improves performance
( Type ) ( 必填 ) 用于说明 commit 的类别,只允许使用下面 7 个标识。
feat: 新增/修改一个页面/功能,接口联调
fix: 修复Bug,后面最好把bug的编号填到上
docs: 修改了文档 README CHANGELOG
style: 修改了页面的css样式(不改变代码逻辑)
refactor:代码重构( 即不是新增功能,也不是修改 bug 的代码变动)
perf: 改善性能
test: 测试用例,单元测试,集成测试。
build: 变更项目构建或外部依赖(例如scopes: webpack、gulp、npm等)
ci: 更改持续集成软件的配置文件和package中的scripts命令,例如scopes: Travis, Circle等
chore: 改变构建流程,或者增加依赖库,工具(辅助工具)等变
revert: 回滚到上一个版本(代码回退)
( Scope ) ( 选填 ) 用来说明本次Commit影响的范围,scope 用于说明 commit 影响的范围,比如页面绘制(html),接口联调(api),UI样式以及还原(css),等等,视项目不同而不同。
? What is the scope of this change (e.g. component or file name)
( Subject ) ( 必填 ) 用来简要描述本次改动,如果规则很长,详细信息在后面的Body里给出。请遵循下面格式: 改动的哪个页面,新增/修改/删除什么功能,
? Write a short, imperative tense description of the change (max 94 chars):
(17) 客户维护页面,新增客户导出功能,根据搜索条件导出数据,不支持勾选导出。
( Body ) ( 选填 ) 在此做更加详尽的描述,内容里应该包含修改动机和修改前后的对比。
? Provide a longer description of the change: (press enter to skip)
( Footer )( 选填 ) 里的主要放置不兼容变更和Issue关闭的信息,我们项目里面如果type为fix时可以填jira上的bug编号
? Does this change affect any open issues?
gitHooks 会执行 vue-cli-service lint 检查代码规范 在检查无误之后可以进行 pull 和 push 操作
「真诚赞赏,手留余香」
真诚赞赏,感谢认可
使用微信扫描二维码完成支付