Git 相关操作
使用 Git 上传本地项目到 github?
- 第一步:初始化 git
git init
- 第二步:查看文件状态
git status
- 第三步:添加所有文件
git add .
- 第四步:提交文件到本地仓库
git commit -am 'first commit init product'
- 第五步:添加远程仓库地址
git remote add origin git仓库地址
- 第六步:将本地项目推送到远程仓库
git push -u origin master
git 相关命令
- 分支
查看本地分支:git branch
查看远程分支:git branch -r
新增分支:git checkout -b 分支名
删除分支:git branch -D 分支名
推送本地分支到远程:git push origin HEAD -u
- 命令
git merge origin master 拉取远程仓库最新代码
git add . 追踪文件的变化
git commit -am "备注信息" 将代码提交到本地仓库
git push 本地仓库代码推送到远程仓库
提交pull request 管理员审核
git diff 查看每个文件的变化
git difftool 查看每个文件的变化以另外一种方式
git tag tag-initial 创建一个标记用于以后查看
git tag -d tag名 删除tag
git push origin tag-initial 将创建的标记提交到远程
git push -u -f origin master 强制推送
git commit 规范
市面上比较流行的方案是约定式提交规范(Conventional Commits),它受到了Angular提交准则的启发,并在很大程度上以其为依据。约定式提交规范是一种基于提交消息的轻量级约定。 它提供了一组用于创建清晰的提交历史的简单规则;这使得编写基于规范的自动化工具变得更容易。它的 message 格式如下:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
<类型>[可选的作用域]: <描述>
[可选的正文]
[可选的脚注]
其中,Header 是必需的,Body 和 Footer 可以省略。
介绍
commitizen 是一个撰写合格commit message的工具, 用于代替git commit 指令; cz-conventional-changelog 适配器提供 conventional-changelog标准(约定式提交标准)
- 全局安装
npm install -g commitizen cz-conventional-changelog
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
安装完毕后,可直接使用git cz来取代git commit
- 项目内安装
commitlint 负责用于对commit message进行格式校验, husky 负责提供更易用的git hook
yarn add husky @commitlint/config-conventional @commitlint/cli -D
注意:commitlint 只能做格式规范, 无法触及内容. 对于内容质量的把控只能靠我们自己.
配置
项目根目录创建 commitlint.config.js
echo 'module.exports = {extends: ["@commitlint/config-conventional"]};' > ./commitlint.config.js
注意:使用 UTF-8 格式, 不然 husky 会报错
package.json 文件中引入 husky
"husky": {
"hooks": {
"commit-msg": "commitlint -e $GIT_PARAMS"
}
}
使用
执行 git add . 之后, 执行 git cz 进入 interactive 模式,根据提示依次填写
? Select the type of change that you're committing: ? 选择要提交的更改类型:
? What is the scope of this change (e.g. component or file name): (press enter to skip) ? 此更改的范围是什么(例如组件或文件名):(按enter键跳过)
? Write a short, imperative tense description of the change (max 55 chars): ? 写一个简短的命令式时态描述(最多55个字符):
? Provide a longer description of the change: (press enter to skip) ? 提供更改的详细说明:(按enter键跳过)
? Are there any breaking changes? ? 有什么突破性的变化吗?
? Describe the breaking changes: ? 描述突破性的变化:
? Does this change affect any open issues? ? 这一变化是否影响到任何未决问题?
? Add issue references (e.g. "fix #123", "re #123".): ? 添加问题参考(例如“fix#123”、“re#123”):
最后执行 git push -u origin branchName
选项说明
- type (必填)
type为必填项,用于指定commit的类型,约定了feat、fix两个主要type,以及docs、style、build、refactor、revert五个特殊type,其余type暂不使用。
# 主要type
feat: 增加新功能
fix: 修复bug
# 特殊type
docs: 只改动了文档相关的内容
style: 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
build: 构造工具的或者外部依赖的改动,例如webpack,npm
refactor: 代码重构时使用
revert: 执行git revert打印的message
# 暂不使用type
test: 添加测试或者修改现有测试
perf: 提高性能的改动
ci: 与CI(持续集成服务)有关的改动
chore: 不修改src或者test的其余修改,例如构建过程或辅助工具的变动
- scope (选填)
scope也为必填项,用于描述改动的范围,格式为项目名/模块名,例如:package.json ...
- subject(必填)
subject是 commit 目的的简短描述,不超过 55 个字符
生成 Change log
$ npm install -g conventional-changelog
$ cd my-project
$ conventional-changelog -p angular -i CHANGELOG.md -w
{
"scripts": {
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -w -r 0"
}
}
conventional-changelog-cli:从git metadata生成变更日志
- 安装
yarn add conventional-changelog-cli -S
- 在项目根目录下新建CHANGELOG.md
package.json 添加指令
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s"
注意:如果这是您第一次使用此工具,并且想要生成所有以前的变更日志,则可以执行:
conventional-changelog -p angular -i CHANGELOG.md -s -r 0