【问题标题】: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 可能会根据某种规则重写文件,所以现在工作树中重写的文件需要复制之前的文件,而不是-重写之前复制到暂存区的文件。

标签: git lint lint-staged


【解决方案1】:

你不需要git add,因为 lint-staged 10

从 v10.0.0 开始,对原始暂存文件的任何新修改 将自动添加到提交中。如果您之前的任务 包含git add 步骤,请删除它。自动的 行为确保存在较少的竞争条件,因为尝试运行 同时进行多个 git 操作通常会导致错误。

来源:https://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 期间未暂存的文件会怎样?
猜你喜欢
  • 2013-06-02
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 2020-08-18
  • 2013-01-12
  • 2019-09-12
  • 2023-02-23
  • 2021-05-24
相关资源
最近更新 更多