The problem:
I'm on OSX. I have a very small .gitignore file, and I even tried completely deleting the file. Nothing helps. Git doesn't see anything under my .idea directory for intellij.
At the very least I want to store .idea/runConfigurations/*. Worse than that, according to this post, all the files in that directory but 1 or 2 should be source controlled.
Is there an extra, hidden .gitignore setting somewhere I don't know about? Is there any way to search for and murder it if so?
Steps taken so far:
I manually added the most important ones with:
git add .idea/runConfigurations -f
Trying that without the -f gave:
The following paths are ignored by one of your .gitignore files:
.idea
Use -f if you really want to add them.
To reiterate: it gave that error even when I completely deleted my .gitignore file
Similar-but-unsolved thread:
After raking through SO I managed to find one other thread having the same problem. Unfortunately it got marked as answered even though the original poster replied that the problem remained unsolved. Regardless, MY version of the problem remains unsolved
Do you have ~/.gitignore
file? Here is the information that may be helpful.
Git has a very flexible hierarchy of ignore files: First it reads .gitignore
file in your home directory. Put here common data for all repos (*.bak
, for example, you definitely do not need them in any repo). Then, you can have .gitignore
file in any folder inside your repo. It impacts on any files in this folder and its subdirectories. Also, you can have excludes in .git/info/exclude
. It differs from .gitignore
because it is not indexed, and you can put personal settings here. Of course ~/.gitignore
is not indexed too.
I had the same problem. In my .git/exclude/info file, I exclude the names of executables that are created. But I often use the same name for the directories in which these executables reside,
e.g. the "sphere" directory contains the executable "sphere". Since I had added all of the files before excluding the executable names in info/exclude, the fatal error never kicked in, even after excluding the directory/executable name to info/exclude.
Recently, however, I tried to add a file from a directory whose name was already excluded (because it matched the name of an executable I was excluding). The fatal error kicked in, and I was confused. I forced the add, and now any subsequent adds ignore the fatal error.
What this suggests is that it makes sense to exclude executable names in local .gitignore files, rather than in info/exclude.
If using the -f
flag doesn't make any difference (i.e. the file still doesn't get staged), double check that the thing you're trying to add isn't already in the repository.
In my case I was trying to add something that had already been added and then deleted on a different branch, leading me to incorrectly think it had never been added in the first place. And Git was quite reasonably refusing to add the same thing twice.