How can I add files starting with dot (hidden files) in git repo? Git seems to always ignore those.
When I type git add .
, dotfiles in GIT_DIR
are added, but not from subdirectories. On the other hand, git add subdir/.dotfile
won't work.
I tried git add -f
and putting !.*
in GIT_DIR/.git/info/exclude
. No luck.
git add .
and git add dir/.dot
work fine for me with the unadorned 1.6.6.1 and 1.7.0 versions of Git that I have handy right now.
% git --version
git version 1.6.6.1
% git ls-files -o
.baz/baz
.foo
bar/.bar
quuux/quuux
quux
% git add .
% git ls-files -o
% git ls-files
.baz/baz
.foo
bar/.bar
quuux/quuux
quux
What version of Git are you using? Are your subdirs actually submodules (which are managed independently)?
“dot files” are not excluded by default, but maybe some bit of configuration on your system, repository, or working tree has them set that way. If they show up in git ls-files --exclude-standard -oi
then they are being ignored and "!.*" is the right way to ‘unignore’ them. But to be effective, that pattern has to be in the right place. Ignores are processed in this order:
git config core.excludesfile
(which could be set by
GIT_EDITOR=echo git config --system --edit
to get its pathname)).When a pathname matches a pattern in one file, subsequent files are not consulted. The last match in each file “wins”. A pattern in $GIT_DIR/info/exclude can never override a pattern in a .gitignore file. So, if the files are being ignored (per git ls-files --exclude-standard -oi
) and if "!.*" in $GIT_DIR/info/exclude is ineffective, then check all the applicable .gitignore
files for the culprit.