Suppose that I am running a script inside a Git repository and want to access the index file directly. How can I get the path to the index file, in a way that also respects e.g. worktrees?
Asked
Active
Viewed 26 times
1 Answers
6
You can use git rev-parse
with the --git-path
option. From the man-pages:
--git-path <path>
Resolve "$GIT_DIR/<path>" and takes other path relocation variables such as $GIT_OBJECT_DIRECTORY, $GIT_INDEX_FILE... into account. For
example, if $GIT_OBJECT_DIRECTORY is set to /foo/bar then "git rev-parse --git-path objects/abc" returns /foo/bar/abc.
To get the index file specifically, you can write this:
$ git rev-parse --git-path index
.git/index
This also respects worktrees:
$ git -C /path/to/my-worktree rev-parse --git-path index
/path/to/main/repo/.git/worktrees/my-worktree/index
And respects environment variables like GIT_INDEX_FILE
:
$ GIT_INDEX_FILE=foo git -C /path/to/my-worktree rev-parse --git-path index
foo
Note that other solutions, such as manually calculating the .git
directory and appending a path, might not work due to the lack of handling the above.

Waleed Khan
- 11,426
- 6
- 39
- 70
-
This is the correct answer. Any "homegrown" solutions are virtually guarantied to miss "corner cases" like worktrees etc that the author did not know about. – hlovdal Mar 27 '23 at 22:55