一、常规操作
- 本地项目提交远程
git init
git remote add origin https://github.com/chengliu0508/demo.git
- 初始拉取代码
git clone origin https://github.com/chengliu0508/demo.git
- 提交
git checkout -b mybranch
git add .
git commit -m "first commit"
git pull origin master:mybranch
git push origin mybranch
-
发起合并请求
git merge 新建新的commit,之前两条分支指向它
git rebase 找到共同祖先,线形记录
git cherry-pick 挑选分支的某一次或几次提交记录合并
-
回退
git revert xx 放弃某次提交xx,有记录
git reset xx —hard 回滚到某次提交xx,无记录 git reset HEAD . 撤销add的代码
二、git配置
git config --list
git config --global user.email 'xxx@xx.com'
git config --global user.name 'xxx'
git pull = git fetch + git merge
三、git hook
Git 能在特定的重要动作发生时触发自定义脚本,其中比较常用的有:pre-commit、commit-msg、pre-push 等钩子(hooks),.git/hooks 目录生成一系列的 hooks 脚本
pre-commit触发时进行代码格式验证commit-msg触发时对 commit 消息和提交用户进行验证pre-push触发时进行单元测试、e2e 测试等操作
在 npm install 执行完成后,自动执行 git config core.hooksPath hooks 命令。
git config core.hooksPath hooks 命令将 git hooks 目录设置为项目根目录下的 hooks 目录。
"scripts": {
"lint": "eslint --ext .js src/",
"postinstall": "git config core.hooksPath hooks"
},
四、 husky
husky 是一个为 git 客户端增加 hook 的工具。npx husky init 在项目根目录下创建 .husky 目录,husky 包含很多 hook,常用的有:pre-commit、commit-msg、pre-push。
在 package.json 中添加一个脚本,"prepare": "husky install"
五、lint-staged
提交代码的时候,我们希望只对要提交的部分代码进行 eslint 检查,而不影响其他的代码,就需要借助 lint-staged 这个工具。
lint-staged 这个工具一般结合 husky 来使用,它可以让 husky 的 hook 触发的命令只作用于 git add 那些文件(即 git 暂存区的文件)。
①、安装 lint-staged
npm install lint-staged -D
②、修改 package.json 文件
在 package.json 中添加 lint-staged 配置项,这里我们要结合 Prettier 代码格式化,所以配置如下:
// package.json
{
...
"lint-staged": {
"*.{vue,js,ts,jsx,tsx}": [
"yarn prettier",
"yarn lint"
]
}
}
上述命令表示:只对 git 暂存区的 .vue、.js、.ts、.jsx、.tsx 文件执行 prettier 代码格式化和 eslint 检查。
③、修改 .husky/pre-commit 文件
修改 .husky/pre-commit hook 文件中触发命令为 npx lint-staged。
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged
以上,husky 和 lint-staged 组合配置完成。
然后,尝试修改一下 vue 文件,git add 之后 git commit -m "xx",这时候只会对待提交的文件进行代码格式化和 eslint 检测,如果 eslint 检测通过则成功提交,否则终止提交
推荐
欢迎关注我的前端自检清单,我和你一起成长