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的区别

Windows环境git执行git add命令warning: ....