threads / discuss / 62837

`git add` with unmatching case silently fails on case-insensitive file systems

Subject: `git add` with unmatching case silently fails on case-insensitive file systems

## tl;dr

2 messages between Jan 21, 2025 and Jan 21, 2025.

replies: 1people: 2as markdown or json

Lê Duy Quang· Jan 21, 2025, 07:52 UTC · lore
Good morning,

I am using Git on Windows, whose file system is case-insensitive. If the working tree has a file called `SourceFile.c`, for example, and I run `git add sourcefile.c`, I would expect either (a) Git stages `SourceFile.c` or (b) Git errors with "fatal: pathspec 'sourcefile.c' did not match any files". However, none of those actually took place; instead Git did not stage the file and produced no output as if the command had succeeded, which led me to proceed to committing without realizing I had missed the file.

I would like to know whether this is intended behavior or I have bumped into a case-sensitivity bug.

Regards, Quang

Torsten Bögershausen· Jan 21, 2025, 17:16 UTC · re: Lê Duy Quang · lore

Re: `git add` with unmatching case silently fails on case-insensitive file systems

On Tue, Jan 21, 2025 at 02:52:09PM +0700, Lê Duy Quang wrote:
Show 12 quoted lines
> Good morning,
>
> I am using Git on Windows, whose file system is case-insensitive. If the
> working tree has a file called `SourceFile.c`, for example, and I run `git
> add sourcefile.c`, I would expect either (a) Git stages `SourceFile.c` or
> (b) Git errors with "fatal: pathspec 'sourcefile.c' did not match any
> files". However, none of those actually took place; instead Git did not
> stage the file and produced no output as if the command had succeeded, which
> led me to proceed to committing without realizing I had missed the file.
>
> I would like to know whether this is intended behavior or I have bumped into
> a case-sensitivity bug.

The thing is that Windows tells us sourcefile.c is there, even if Sourcefile.c is there. So that is why neither a) nor b) is happening.

You can call it a bug, or a not-yet-implemented feature. In any case, just to be shure, git status is your friend before doing the commit.

← back to recent threads