lint-staged:'git add'命令的目的是什么?

14

最近我开始在我的前端构建工具链中引入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,这有什么目的?

我的理解是,在git add之后,在git commit之前,lint-staged只会验证暂存区中的代码。因此不明白为什么我们需要再添加一个git add


2
“--fix” 可能会根据某种规则重写文件,因此现在工作树中重新编写的文件需要复制到您之前复制到暂存区的未重写文件上。 - torek
2个回答

30

自从lint-staged 10版本以后,您无需使用git add命令。

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

来源:https://github.com/okonet/lint-staged#v10


3
这是那个答案的链接:https://github.com/okonet/lint-staged#v10。 - russ

5
它使用husky在你提交前挂钩一些操作。请参见:https://github.com/typicode/husky lint-staged仅更改您的代码并使其进行linting(它由husky在提交之前运行)。更改后,您需要再次添加它以更新git索引。然后您的更改将在您的提交中生效。

1
2020年更新:自lint-staged@10.0.0版本以来,您可以在配置中省略git add - Dimitar Tsonev
当不使用lint-staged@10.0.0时,在git add期间未暂存的文件会发生什么? - Luke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接