lint-staged:“git add”命令的目的是啥
Posted
技术标签:
【中文标题】lint-staged:“git add”命令的目的是啥【英文标题】:lint-staged: what the purpose of 'git add' commandlint-staged:“git add”命令的目的是什么 【发布时间】:2019-06-21 03:37:26 【问题描述】:最近我开始将lint-staged
引入我的前端构建工具链。当我检查有关它的文档时,我总是发现它的工作原理如下:
"husky":
"hooks":
"pre-commit": "lint-staged"
,
"lint-staged":
"src/**/*.js,jsx,ts,tsx,json,css": [
"prettier --write",
"eslint --fix src/",
"tslint --fix --project .",
"git add"
]
,
你可以在链接中找到更多类似的用法:https://github.com/okonet/lint-staged
我的困惑点是最后一个命令git add
,它的目的是什么?
我的理解是lint-staged
仅在git add
之后和git commit
之前验证暂存区中的代码。所以无法理解为什么我们需要再添加一个git add
。
【问题讨论】:
--fix
可能会根据某种规则重写文件,所以现在工作树中重写的文件需要复制之前的文件,而不是-重写你之前复制到暂存区的文件。
【参考方案1】:
你不需要git add
,因为 lint-staged 10
从 v10.0.0 开始,对原始暂存文件的任何新修改 将自动添加到提交中。如果您之前的任务 包含
git add
步骤,请删除它。自动的 行为确保存在较少的竞争条件,因为尝试运行 同时进行多个 git 操作通常会导致错误。
来源:https://github.com/okonet/lint-staged#v10
【讨论】:
这是该答案的链接github.com/okonet/lint-staged#v10【参考方案2】:它使用 husky 在您提交之前挂钩一些操作。见:https://github.com/typicode/husky
lint-staged
只是更改您的代码并使其 linting(它在 husky 提交之前运行)。修改后需要再次添加更新git index。您的更改将在您的提交中生效。
【讨论】:
2020 年更新:由于 lint-staged@10.0.0 您可以在配置中省略git add
。
不使用 lint-staged@10.0.0 时,git add
期间未暂存的文件会怎样?以上是关于lint-staged:“git add”命令的目的是啥的主要内容,如果未能解决你的问题,请参考以下文章
Husky 和 lint-staged 无法运行 gulp 命令
使用plumbing命令来深入理解git add和git commit的工作原理
【Git原理】深入理解git add和git commit命令
git checkout .和git checkout -f的区别;git add . git add -u git add -A的区别
git checkout .和git checkout -f的区别;git add . git add -u git add -A的区别