Git使用教程
学习Git的使用。
项目
项目开发流程
产生:
1.明确需求和业务场景(用例图和如何使用)
2.设计代码框架(代码结构和数据流向)
3.分析设计细节业务的实现
4.设计类,设计流程图,序列图,状态图
5.评估设计和后续设计修改
维护:
1.建立开发分支,开发完成
2.提交测试
3.生成changelog
4.测试通过,release提交changelog,打tag,合并到dev或者master上,删除临时分支
项目开发结构工程
1 | .vscode |
Git教程
熟悉Git的基本的使用可通过Git的教程游戏学习。
Git原理
了解Git的原理和不同的模式
git模型
git状态
git工作原理
Git基础
Git配置用户
安装Git之后,要做的第一件事就是设置自己的用户名和邮件地址。通过Git对项目进行版本管理的时候,Git需要使用这些基本信息,来记录是谁对项目进行了操作。
1 | # 如果使用了 --global 选项,那么该命令只需要运行一次,即可永久生效 |
检查配置信息
1 | # 查看所有的全局配置项 |
获取帮助信息
1 | # 打开git config命令的帮助手册 |
Git操作
操作之前要知道, git中文件的状态未跟踪?
未修改U
已修改M
已暂存A
创建仓库
有一个尚未进行版本控制的项目目录,想要用Git来控制它
1 | # 在项目目录, 开 Git Bash |
.gitignore
配置文件书写方式
1 | # 以 # 开头的是注释 |
操作命令
1 | # 查询文件状态 |
Git的HEAD
1 | # 分离HEAD到提交记录CommitId |
Git提交树
1 | # 复制提交记录到某个分支 |
Github操作
1 | # 将远程仓库克隆到本地 |
第一次Push Master分支
1 | # 设置git |
Git常用的命令
教程参考,多上Google查阅。
git add
命令将文件内容添加到索引(将修改添加到暂存区)。也就是将要提交的文件的信息添加到索引库中。git clone
命令将存储库克隆到新目录中。git status
命令用于显示工作目录和暂存区的状态。git diff
命令用于显示提交和工作树等之间的更改。git commit
命令用于将更改记录(提交)到存储库。git reset
命令用于将当前HEAD复位到指定状态。git rm
命令用于从工作区和索引中删除文件。git mv
命令用于移动或重命名文件,目录或符号链接。git branch
命令用于列出,创建或删除分支。git checkout
命令用于切换分支或恢复工作树文件。git merge
命令用于将两个或两个以上的开发历史加入(合并)一起。git log
命令用于显示提交日志信息。git stash
命令用于将更改储藏在脏工作目录中。git fetch
命令用于从另一个存储库下载对象和引用。git pull
命令用于从另一个存储库或本地分支获取并集成(整合)。git push
命令用于将本地分支的更新,推送到远程主机。git remote
命令管理一组跟踪的存储库。git show
命令用于显示各种类型的对象。git rebase
命令在另一个分支基础之上重新应用,用于把一个分支的修改合并到当前分支。
Git合并分支请求
1 | 1.创建新分支编辑代码 |
Gitlab上Merage请求
1.选择merge请求
Git仓库的分支和Commit开发规范
Git仓库分支管理
分支命名
固定 分支
master 分支
- master 为主分支,也是用于部署生产环境的分支,确保master分支稳定性
- master 分支一般由develop以及hotfix或fixbug分支合并,任何时间都不能直接修改代码
develop 分支
- develop 为开发分支,始终保持最新完成以及bug修复后的代码
- 一般开发的新功能时,feature分支都是基于develop分支下创建的
临时 分支
feature 分支
- 开发新功能时,以develop为基础创建feature分支
- 分支命名: feature/ 开头的为特性分支, 命名规则: feature/user_module、 feature/cart_module
release分支
- release 为预上线分支,发布提测阶段,会release分支代码为基准提测
当有一组feature开发完成,首先会合并到develop分支,进入提测时,会创建release分支。
如果测试过程中若存在bug需要修复,则直接由开发者在release分支修复并提交。
当测试完成之后,合并release分支到master和develop分支,此时master为最新代码,用作上线。
fixbug 分支
分支命名: fixbug/ 开头的为修复分支,它的命名规则与 feature 分支类似
非紧急的bug时,计划性修复,以master或develop分支为基线,创建fixbug分支,修复完成后,需要合并到master分支和develop分支
修补bug
hotfix 分支
分支命名: hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似
线上出现紧急问题时,需要及时修复,以master或develop发布的分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支
分支任务
feature 分支
1 | git checkout -b feature/xxx # 从dev建立特性分支 |
hotfix 分支
1 | git checkout -b hotfix/xxx # 从master建立hotfix分支 |
release 分支
1 | git merge dev --no-ff # 把dev分支合并到release,然后在测试环境拉取并测试 (--no-ff保留合并信息) |
master 分支
1 | git merge release --no-ff # 把release测试好的代码合并到master (--no-ff保留合并信息) |
Git Commit规范
Commit messages的基本语法,参考比较广泛的格式Angular Git Commit Guidelines,参考文档1,参考文档2。
具体格式为:
<type>(scope): <subject>
<BLANK LINE>
body
<BLANK LINE>
footer
参数说明
type: commit的类型
scope: commit修改的文件范围
subject: 简明commit的内容,留空首字母不要大写,动词开头,结尾不需要.,不超过50个字符
body: commit详细描述,需换行,则使用 |,每一行不超过72个字符
footer: 其他与代码无关描述
Type的类别说明:
值 | 描述 |
---|---|
feat(feature) | 新增一个功能 |
fix | 修复一个Bug |
docs | 文档变更 |
style | 代码格式(不影响功能,例如空格、分号等格式修正) |
refactor | 代码重构 |
perf(perfect) | 改善性能 |
test | 测试 |
build | 变更项目构建或外部依赖 |
ci | 更改持续集成软件的配置文件和package中的scripts命令 |
chore | 变更构建流程或辅助工具 |
revert | 代码回退 |
Git commit 提交例子
1 | git add -A # 添加修改文件 |
Nodejs的Changelog
- nodejs安装
官方网站下载,选择对应的版本,解压
1 | vim ~/.bashrc |
- Commitizen安装
更换淘宝镜像
1 | npm install -g cnpm --registry=https://registry.npm.taobao.org |
1 | npm install -g commitizen |
- 安装changelog
1 | npm install -g conventional-changelog |
检查
1 | npm ls -g -depth=0 |
成功安装
1 | /home/dev/workspace/nodejs/node-v12.18.2-linux-x64/lib |
- 到工程目录
nodejs初始化
1 | npm init --yes |
支持Angular的Commit message格式
1 | commitizen init cz-conventional-changelog --force --save --save-exact |
生成Changelog
生成Changelog记得打开package.json修改version
1 | # 基于上次 tag 版本(本地的tag版本)之后的变更 |
定制commit message格式
1 | # 安装cz-customizable |
Note:
提交git commit 时使用git cz
添加步骤:
1.git add -A // 将改变添加入缓存
2.git cz // 添加文件修改commit
3.conventional-changelog -p angular -i CHANGELOG.md -s -p // 生成本次的Changelog
4.git add -A // 添加Changelog的改变
5.git cz // 添加Changelog的改变
6.git push // 进行push