【Git】3年前端Git使用实践总结
1 Git 流程图
Workspace
:工作区Index / Stage
:暂存区Repository
:本地仓库Remote
:远程仓库
2 注释规范
fix:修补
feat:新功能(feature)
optimize:优化
perf: 改进性能的变更
test:新增测试用例
style: 格式(不影响代码运行的变动)
chore:小改动. 一般为仅仅一两行的改动
delete: 删除
br: 针对bug号,用于向测试反馈bug列表的bug修改情况
docs:文档变更相关
refactor: 代码重构变更
3 基本操作
- 克隆代码
# 克隆代码
git clone http://mengn@gitlab.open.com.cn/mkw/imooc/jiuyeban.git
# 克隆制定分支代码
git clone -b mengn http://mengn@gitlab.open.com.cn/mkw/imooc/jiuyeban.git
- 创建并切换到新分支
git checkout -b course_contrast_20220302
- 切换分支
# 先切换到主分支
git checkout master
git checkout mengn
- 本地分支推远程
git push -u origin mengnjobmanagement
4 分支操作
- 合并分支
git pull
git checkout master
如果没有pull master代码,会提示当前分支落后,push会失败
git pull
master要mengn代码
git merge 20211122_work_order
git会出现 merge branch mengn
没有commit,合并文件为你新增的文件
1、合并完成,直接push
2、自动合并失败,修复冲突,然后提交结果
以下文件将被拉取,合并前请先提交(必)
add
commit
git push
git status
- 本地推master
git push origin xxxx:master
- 拉取master代码
git pull origin master
- 删除本地分支:
git branch -d course_contrast_20220302
- 删除远程分支:
git push origin --delete course_contrast_20220302
- 本地推远程:
git push origin mengn
5 工作操作
5.1 撤销(工作区)
git checkout smarty/template/class/templet/531.phtml
# 清除未被 add 或被 commit 的本地修改
git clean -df
5.2 撤销(已经add.)
# 撤删add的所有文件
git reset HEAD
# 对某一个文件撤删
git reset HEAD src/mode/hello.java
5.3 撤销(已经commit)
git reset smarty/template/class/templet/531.phtml
5.4 修改commit日志
第一步:
git commit --amend
第二步:
进入vim编辑状态,修改保存
第三步:
git push origin master(分支) --force
5.5 暂存文件
第一步:修改好的代码,先add
第二步:暂存文件
git stash //把本地的改动暂存起来
git stash save "message" //执行存储时,添加备注,方便查找。
git stash pop // 应用最近一次暂存的修改,并删除暂存的记录
git stash apply // 应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即 stash@{0},如果要使用其他个,git stash apply stash@{$num} 。
git stash list // 查看 stash 有哪些存储
git stash clear // 删除所有缓存的 stash
6 git CZ
commitizen/cz-cli是一个规范化提交信息的工具,当我们在多人协作开发过程中,有必要养成良好的commit
规范,方便日后review
代码,产出CHANGELOG
说明等等。
cz-customizable
默认会去读取项目中.cz-config.js
配置,所以我们还要新建文件.cz-config.js
。
// 可选类型
types: [
{ value: 'feat', name: 'feat: 新功能' },
{ value: 'fix', name: 'fix: 修复' },
{ value: 'docs', name: 'docs: 文档变更' },
{ value: 'optimize', name: 'optimize: 优化' },
{ value: 'style', name: 'style: 代码格式(不影响代码运行的变动)' },
{ value: 'refactor', name: 'refactor: 重构(既不是增加feature,也不是修复bug)' },
{ value: 'perf', name: 'perf: 性能优化' },
{ value: 'test', name: 'test: 增加测试' },
{ value: 'chore', name: 'chore: 构建过程或辅助工具的变动' },
{ value: 'revert', name: 'revert: 回退' },
{ value: 'build', name: 'build: 打包' }
],
// 消息步骤
messages: {
type: '请选择提交类型:',
customScope: '请输入修改范围(可选):',
subject: '请简要描述提交(必填):',
body: '请输入详细描述(可选):',
footer: '请输入要关闭的issue(可选):',
confirmCommit: '确认使用以上信息提交?(y/n/e/h)'
},
// 跳过问题
skipQuestions: ['body', 'footer'],
// subject文字长度默认是72
subjectLimit: 72
}
当我们准备要提交代码,git add .
> git commit -m 'xx'
, 这里我们用 git cz
取代git commit
操作 >git push
7 git flow工作流
代码管理的标准工作流程,分为:
- 集中式工作流
和SVN一样,集中式工作流以中央仓库作为项目所有修改的单点实体,所有修改都提交到master这个分支上。
- 功能分支工作流
以功能分支命名
- git flow工作流(最佳实践)
GitFlow
工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更加流畅,严格的分支模型为大型项目提供了非常必要的结构。
- master --主干
- hotfix --热部署 (修复线上bug)
- release --分支 (测试代码分支)
- dev--开发分支
- feature ---功能
master下的代码必须保证线上直接运行
创建开发分支 develop
根据dev分支创建feature_login mengn lidy
开发代码 -提交到feature分支
合并到dev分支
release 基于dev创建
hotfix基于dev分支创建
开发完了分支都删除
以上便是个人在工作中常用的 git
命令,希望本文能对你有所帮助。