Andres Riofrio
Andres Riofrio

Reputation: 10357

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

While it seemed to do nothing, it gave no warning or error message. Any ideas?

Upvotes: 32

Views: 6912

Answers (2)

manojlds
manojlds

Reputation: 301117

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.

Upvotes: 27

Chris Cherry
Chris Cherry

Reputation: 28554

Short answer: Nothing.

Long answer:

laptop:Projects ctcherry$ mkdir test
laptop:Projects ctcherry$ cd test
laptop:test ctcherry$ git init .
Initialized empty Git repository in /Users/ctcherry/Projects/test/.git/
laptop:test ctcherry$ git add .git
laptop:test ctcherry$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
laptop:test ctcherry$ 

Upvotes: 18

Related Questions