can't add folder in git

I add new folder (actually I cloned it from another repo, and forgot that), then I did some changes there. Additionally I did a lot of changes in another places, when I tried to do git add

# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
# (commit or discard the untracked or modified content in submodules)
#
# modified: protected/ext/SpecificFolder (modified content)
#

Then I remember that maybe there was .git folder (because previous I did git clone there). I went to that folder and remove non needed files (folders) and .git folder too. I checked git status, nothing strange. Then commit and checkout to another branch and suddenly I figure out that this folder was not added to last commit. Actually folder was added but files inside was ignored. Now even when I'm trying to do git add for that folder nothing happenning and git status do not show any changes :(

What can I do ?

2

6 Answers

Git doesn't track directories; but just the files within them.

It sounds like you might have an ignore pattern that is causing add to do nothing. You can see ignored files with git status --ignored; they can then be tracked with git add --force protected/ext/SpecificFolder

5

Git doesn't track EMPTY directories. If you have a project w/ multiple layers of subdirectories, git does in fact track the directories w/ files in them. If it didn't, then it would be one flat repository of files.

1

I happened to do exactly what this user did: Add an existing git repository inside another one.

The symptom was that git recognised that directory as a file, and thus was unable to add the directory's files.

To solve that question, I deleted the .git folder in the folder, moved that folder in another directory, cleared the index, removed the directory where in my repo, and then I was able to add the directory properly.

The moral of this is: don't add a repository inside another one.

3

There is a better answer here:.gitkeep usage

TL;DR, add a .gitkeep file to your empty directory

Try adding a file in that directory.

$ git add my-dir/index.html

If you see a output like the below:

The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added

There's a rule in one of your gitignores that prevent you from adding that directory.

I found similar side-effects after trying to convert what used to be a submodule into a normal subfolder.

Re-adding the folder I was attempting to convert seemed to work, but it turns out that the files inside it were not actually added.

Trying to specifically add a file inside it gave me a better warning

git add sites/all/modules/contrib/transclusion/transclusion.module
fatal: Pathspec 'sites/all/modules/contrib/transclusion/transclusion.module' is in submodule 'sites/all/modules/contrib/transclusion'
  • so it was related to the way I had manually tried to remove the old submodule, as there was no well-documented process for doing it properly. - I had just deleted it from .gitmodules. Other stuff was actually necessary to eraticate the shadows of the submodule.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like