What happens when you run `git add .git` in a Git repository?

Comment from Git source:

/*
 * Read a directory tree. We currently ignore anything but
 * directories, regular files and symlinks. That's because git
 * doesn't handle them at all yet. Maybe that will change some
 * day.
 *
 * Also, we ignore the name ".git" (even if it is not a directory).
 * That likely will not change.
 */

Experiment to see what happend if I create a file .git and try to add it:
(on Windows I cannot create a file .git when there is already a .git folder. I also could have created a .git elsewhere in a sub directory, but wanted to try out --git-dir and --work-tree which I haven’t used before. After all I am experimenting. This also allows me to show that I can add the git metadata folder as seen below)

git --git-dir="c:/test" init
touch blah
git --git-dir="c:/test" --work-tree="." add .
git --git-dir="c:/test" --work-tree="." status ( shows blah added)
touch .git
git --git-dir="c:/test" --work-tree="." add .git ( no output as usual)
git --git-dir="c:/test" --work-tree="." status ( only blah shown)

So yeah, .git – be it directory or file, is ignored by git.

And if I do something like below:

git --git-dir="c:/test" --work-tree="c:/test" add c:/test

all the meta files get added.

So again, it is only .git that is ignored not the git metadata folder (that you set via --git-dir) as far as I can see.

Leave a Comment