Inconsistent Behavior in 'git add' (git 2.52.0)

From: Jon Forrest <hidden>
Date: 2026-01-04 19:33:19

A while back (6 Sep 2025) I submitted a report about how running

	git add x bogus_file

where 'x' exists but 'bogus_file' doesn't results
in 'x' not being added to the index. Peff was kind
enough to explain that the presence of even 1 invalid file invalidates
the whole 'git add' command, no matter how many valid files
are included. OK, fine.

This morning I was experimenting with what happens if a file
is specified on a 'git add' command line where the file exists
but is in a .gitignore file. I was expecting the same behavior
as when the file doesn't exist at all. Here's what happened:

% ls -l file1 jon
-rw-r--r-- 1 jonf 15 Dec 30 15:36 file1
-rw-r--r-- 1 jonf  0 Jan  4 11:19 jon

% git check-ignore -v file1
.gitignore:2:file1      file1

So far, so good. Both file1 and jon exist, but file1 is
in .gitignore. Just for yuks, I start with a clean repo.

% git init
Initialized empty Git repository in /tmp/fish/.git/

The index is empty, as shown by
% git ls-files --cached
%

I then ran

% git add file1 jon
git add file1 jon
The following paths are ignored by one of your .gitignore files:
file1

Again, this is exactly what I expected. But, running
'% git ls-files --cached' shows

jon

This is *not* what I expected. I expected the 'git add' command to
not add anything to the index, the same way it behaved when I tried
to add a file that doesn't exist (see the beginning of this message).
But, apparently specifying a missing file is considered a different
kind of error than specifying an ignored file.

Once again, I'm wondering if this is expected behavior.

Cordially,
Jon Forrest









Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help