首页 > 解决方案 > 由于 linting 错误(husky + lint-staged)导致提交失败时,挂起的 git 更改会丢失

问题描述

我有一个使用 git 和 Visual Studio Code 的 Angular 应用程序。我设置了 ESLint 并使用 huskylint-staged在预提交挂钩中运行,因此无法提交带有 linting 错误的更改。

当我第一次设置它时,失败提交中的未决更改就会消失,我了解到它们正在被隐藏:https ://stackoverflow.com/a/60335168/11991371 。

我不明白为什么它会默认隐藏我的更改,而不是让我纠正掉毛错误并再次尝试提交。坦率地说,这似乎很奇怪。遇到它的每个开发人员都会感到恐慌。所以我添加了--no-stash标志,所以它不会那样做。

/.husky/预提交:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx lint-staged --no-stash

但现在我偶然发现了另一个问题案例。脚步:

  1. 对文件进行更改并意外留下 linting 错误。
  2. 暂存此文件。
  3. 在同一个文件中进行另一个更改(但不要暂存它)。
  4. 尝试提交分阶段的更改。它将由于 linting 错误而失败,并且第二次更改将丢失

如果您碰巧打开了文件,您可以通过 IDE 中的“撤消”恢复您的更改,但这是一个大问题。 如何防止由于拒绝提交而丢失工作,同时又不会自动隐藏工作?

标签: githuskygit-huskylint-staged

解决方案


推荐阅读