Skip to content

fix: override GIT_INDEX_FILE to point to the default index instead of unsetting it#1782

Merged
iiroj merged 1 commit into
mainfrom
fix-git-index-file
May 8, 2026
Merged

fix: override GIT_INDEX_FILE to point to the default index instead of unsetting it#1782
iiroj merged 1 commit into
mainfrom
fix-git-index-file

Conversation

@iiroj

@iiroj iiroj commented May 7, 2026

Copy link
Copy Markdown
Member

No description provided.

@broksonic21

Copy link
Copy Markdown

#1781 (comment) - can confirm this fixed my issue (see comment for more)

@iiroj

iiroj commented May 8, 2026

Copy link
Copy Markdown
Member Author

Thanks for testing @broksonic21!

This is in the untested territory because the current e2e tests only spawn lint-staged directly:

const child = fork(lintStagedBin, params, {
...options,
stdio: ['pipe', 'pipe', 'pipe', 'ipc'],
})

I will need to change them so that they set up an actual Git pre-commit hook instead and run lint-staged via that.

@iiroj iiroj force-pushed the fix-git-index-file branch from 301412d to 06813f9 Compare May 8, 2026 13:29
@iiroj iiroj changed the title fix: do not unset GIT_INDEX_FILE if it's the default value fix: override GIT_INDEX_FILE to point to the default index instead of unsetting it May 8, 2026
@iiroj iiroj merged commit e46614b into main May 8, 2026
33 checks passed
@iiroj iiroj deleted the fix-git-index-file branch May 8, 2026 13:46
sys-support pushed a commit to 3caravelle/renovate that referenced this pull request May 11, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [lint-staged](https://github.com/lint-staged/lint-staged) | [`^16.0.0` β†’ `^17.0.0`](https://renovatebot.com/diffs/npm/lint-staged/16.4.0/17.0.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/lint-staged/17.0.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lint-staged/16.4.0/17.0.4?slim=true) |

---

### Release Notes

<details>
<summary>lint-staged/lint-staged (lint-staged)</summary>

### [`v17.0.4`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1704)

[Compare Source](lint-staged/lint-staged@v17.0.3...v17.0.4)

##### Patch Changes

- [#&#8203;1788](lint-staged/lint-staged#1788) [`f95c1f8`](lint-staged/lint-staged@f95c1f8) - Another fix for making sure *lint-staged* adds task modifications correctly to the commit in the following cases:

  - after editing `<file>` it is staged with `git add <file>`, and then committed with `git commit`
  - after editing `<file>` it is committed with `git commit --all` without explicit `git add`
  - after editing `<file>` it is committed with `git commit <pathspec>` without explicit `git add`

  There's new test cases which actually setup the Git `pre_commit` hook to run *lint-staged* and verify them. These issues started in **v17.0.0** when trying to improve support for committig without having explicitly staged files.

### [`v17.0.3`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1703)

[Compare Source](lint-staged/lint-staged@v17.0.2...v17.0.3)

##### Patch Changes

- [#&#8203;1782](lint-staged/lint-staged#1782) [`06813f9`](lint-staged/lint-staged@06813f9) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Fix *lint-staged* behavior when implicitly committing files without using `git add` by either:
  - `git commit -am "my commit message"` where `-a` (`--all`) means to automatically stage all tracked modified and deleted files
  - `git commit -m "my commit message" .` where `.` is an example of a [*pathspec*](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt-pathspec) where matching files will be staged

### [`v17.0.2`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1702)

[Compare Source](lint-staged/lint-staged@v17.0.1...v17.0.2)

##### Patch Changes

- [#&#8203;1779](lint-staged/lint-staged#1779) [`88670ca`](lint-staged/lint-staged@88670ca) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Enable immutable GitHub releases

### [`v17.0.1`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1701)

[Compare Source](lint-staged/lint-staged@v17.0.0...v17.0.1)

##### Patch Changes

- [#&#8203;1776](lint-staged/lint-staged#1776) [`4a5664b`](lint-staged/lint-staged@4a5664b) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Adjust GitHub Actions workflow so that automatic publishing works with signed commits.

### [`v17.0.0`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1700)

[Compare Source](lint-staged/lint-staged@v16.4.0...v17.0.0)

##### Major Changes

- [#&#8203;1745](lint-staged/lint-staged#1745) [`e244adf`](lint-staged/lint-staged@e244adf) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - **Node.js v20 is no longer supported, and the oldest supported version is now `22.22.1`**, which is an active LTS version at the time of this release. Node.js 20 will be EOL after April 2026. Please upgrade your Node.js version!

- [#&#8203;1676](lint-staged/lint-staged#1676) [`0584e0b`](lint-staged/lint-staged@0584e0b) Thanks [@&#8203;outslept](https://github.com/outslept)! - *Lint-staged* now tries to verify the installed Git version is at least `2.32.0`, released in 2021. If you're using an even older Git version, you need to [upgrade](https://git-scm.com/install/mac) it before running *lint-staged*!

- [#&#8203;1745](lint-staged/lint-staged#1745) [`2dcc40a`](lint-staged/lint-staged@2dcc40a) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - The dependency `yaml` is now marked as optional and probably won't be installed by default. If you're using a YAML configuration file you should install the package separately:

  ```shell
  npm install --development yaml
  ```

  If you're using `.lintstagedrc` as the config file name (without a file extension), it will be treated as a YAML file. If the content is JSON, consider renaming it to `.lintstagedrc.json` to avoid needing to install `yaml`.

##### Minor Changes

- [#&#8203;1748](lint-staged/lint-staged#1748) [`809d5ef`](lint-staged/lint-staged@809d5ef) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Add new option `--hide-all` for hiding all unstaged changes and untracked files, before running tasks. This makes it easier to run tools like [Knip](https://knip.dev) which check for unused code. Untracked files are included in the backup stash and restored automatically after running.

- [#&#8203;1759](lint-staged/lint-staged#1759) [`f13045a`](lint-staged/lint-staged@f13045a) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Update dependencies, including [`tinyexec@1.1.1`](https://github.com/tinylibs/tinyexec/releases/tag/1.1.1) to fix the following issues:
  - When using a Node.js version manager with multiple versions installed ([nvm](https://github.com/nvm-sh/nvm), [n](https://github.com/tj/n), for example), scripts with the `#!/usr/bin/env node` shebang ([Prettier](https://github.com/prettier/prettier), [ESLint](https://github.com/eslint/eslint), for example) were previously spawned using the default Node.js version configured by the version manager (the one `which node` points to) on POSIX systems. Now, they will be spawned with the same version that *lint-staged* itself was started with.
    - For example, if your default Node.js version is 24.14.1 but *lint-staged* is run with the latest version 25.9.0, the tasks spawned by *lint-staged* will now also use version 25.9.0. Previously they were spawned using 24.14.1.
  - When installing Node.js from the Ubuntu App Center ([Snap store](https://snapcraft.io/store)), the `node` executable available in `PATH` is a symlink pointing to Snap itself. The sandboxing features of Snap prevented *lint-staged* from spawning scripts with the `#!/usr/bin/env node` shebang, because it meant *lint-staged* tried to spawn Snap via the symlink. This resulted in an `ENOENT` error when trying to run `prettier`, for example. Now, since the real `node` executable's directory is available in the `PATH`, *lint-staged* will instead spawn the script with the real `node` binary succesfully.

- [#&#8203;1761](lint-staged/lint-staged#1761) [`d3251b1`](lint-staged/lint-staged@d3251b1) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - *Lint-staged* now runs `git update-index --again` after running tasks, instead of `git add <originally staged files>`. This should improve compatibility when using non-default indexes, for example when committing with a pathspec `git commit -m "message" .` instead of adding files to the index.

- [#&#8203;1745](lint-staged/lint-staged#1745) [`a9585ac`](lint-staged/lint-staged@a9585ac) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Remove `commander` as a dependency and use the built-in `parseArgs` from `node:util` to parse CLI flags.

##### Patch Changes

- [#&#8203;1755](lint-staged/lint-staged#1755) [`c82d30b`](lint-staged/lint-staged@c82d30b) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - All tests now pass on the [Bun](https://bun.com) runtime (latest).

- [#&#8203;1750](lint-staged/lint-staged#1750) [`a401818`](lint-staged/lint-staged@a401818) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Remove manual handling for `git stash --keep-index` resurrecting deleted files, because the issue was fixed in Git `2.23.0` and *lint-staged* requires at least Git `2.32.0`.

- [#&#8203;1771](lint-staged/lint-staged#1771) [`c4b8936`](lint-staged/lint-staged@c4b8936) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Fix documentation about multiple config files and the `--cwd` option. When using it, all tasks will be run in the specified directory. For example, to run everything in the actual `process.cwd()`, use `lint-staged --cwd="."`.

</details>

---

### Configuration

πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44MS4zIiwidXBkYXRlZEluVmVyIjoiNDIuODEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://git.3caravelle.net/3Caravelle/renovate/pulls/29
Co-authored-by: Renovate Bot <renovate-bot@3caravelle.com>
Co-committed-by: Renovate Bot <renovate-bot@3caravelle.com>
sys-support pushed a commit to 3caravelle/renovate that referenced this pull request May 11, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [lint-staged](https://github.com/lint-staged/lint-staged) | [`17.0.0` β†’ `17.0.4`](https://renovatebot.com/diffs/npm/lint-staged/17.0.0/17.0.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/lint-staged/17.0.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lint-staged/17.0.0/17.0.4?slim=true) |

---

### Release Notes

<details>
<summary>lint-staged/lint-staged (lint-staged)</summary>

### [`v17.0.4`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1704)

[Compare Source](lint-staged/lint-staged@v17.0.3...v17.0.4)

##### Patch Changes

- [#&#8203;1788](lint-staged/lint-staged#1788) [`f95c1f8`](lint-staged/lint-staged@f95c1f8) - Another fix for making sure *lint-staged* adds task modifications correctly to the commit in the following cases:

  - after editing `<file>` it is staged with `git add <file>`, and then committed with `git commit`
  - after editing `<file>` it is committed with `git commit --all` without explicit `git add`
  - after editing `<file>` it is committed with `git commit <pathspec>` without explicit `git add`

  There's new test cases which actually setup the Git `pre_commit` hook to run *lint-staged* and verify them. These issues started in **v17.0.0** when trying to improve support for committig without having explicitly staged files.

### [`v17.0.3`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1703)

[Compare Source](lint-staged/lint-staged@v17.0.2...v17.0.3)

##### Patch Changes

- [#&#8203;1782](lint-staged/lint-staged#1782) [`06813f9`](lint-staged/lint-staged@06813f9) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Fix *lint-staged* behavior when implicitly committing files without using `git add` by either:
  - `git commit -am "my commit message"` where `-a` (`--all`) means to automatically stage all tracked modified and deleted files
  - `git commit -m "my commit message" .` where `.` is an example of a [*pathspec*](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt-pathspec) where matching files will be staged

### [`v17.0.2`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1702)

[Compare Source](lint-staged/lint-staged@v17.0.1...v17.0.2)

##### Patch Changes

- [#&#8203;1779](lint-staged/lint-staged#1779) [`88670ca`](lint-staged/lint-staged@88670ca) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Enable immutable GitHub releases

### [`v17.0.1`](https://github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1701)

[Compare Source](lint-staged/lint-staged@v17.0.0...v17.0.1)

##### Patch Changes

- [#&#8203;1776](lint-staged/lint-staged#1776) [`4a5664b`](lint-staged/lint-staged@4a5664b) Thanks [@&#8203;iiroj](https://github.com/iiroj)! - Adjust GitHub Actions workflow so that automatic publishing works with signed commits.

</details>

---

### Configuration

πŸ“… **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44MS4zIiwidXBkYXRlZEluVmVyIjoiNDIuODEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://git.3caravelle.net/3Caravelle/renovate/pulls/31
Co-authored-by: Renovate Bot <renovate-bot@3caravelle.com>
Co-committed-by: Renovate Bot <renovate-bot@3caravelle.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

Husky triggered lint-staged on git commit --all results in erroneous empty git commit prevention

2 participants