Why am I getting the message, "fatal: This operation must be run in a work tree?"
Solution 1:
Also, you are probably inside the .git subfolder, move up one folder to your project root.
Solution 2:
The direct reason for the error is that yes, it's impossible to use git-add
with a bare repository. A bare repository, by definition, has no work tree. git-add
takes files from the work tree and adds them to the index, in preparation for committing.
You may need to put a bit of thought into your setup here, though. GIT_DIR is the repository directory used for all git commands. Are you really trying to create a single repository for everything you track, maybe things all over your system? A git repository by nature tracks the contents of a single directory. You'll need to set GIT_WORK_TREE
to a path containing everything you want to track, and then you'll need a .gitignore
to block out everything you're not interested in tracking.
Maybe you're trying to create a repository which will track just c:\www
? Then you should put it in c:\www
(don't set GIT_DIR). This is the normal usage of git, with the repository in the .git directory of the top-level directory of your "module".
Unless you have a really good reason, I'd recommend sticking with the way git likes to work. If you have several things to track, you probably want several repositories!
Solution 3:
Just in case what happened to me is happening to somebody else, I need to say this:
I was in my .git
directory within my project when I was getting this error.
I searched and scoured for answers, but nothing worked.
All I had to do was get back to the right directory ( cd .. )
.
It was kind of a face-palm moment for me.
In case there's anyone else out there as silly as me, I hope you found this answer helpful.
Solution 4:
This should solve it:
git config --unset core.bare
Solution 5:
Just clone the same project in another folder and copy the .git/ folder to your project.
Example
Create temp folder:
mkdir temp
switch to temp folder
cd temp/
clone the same project in the temp folder:
git clone [-b branchName] git@path_to_your_git_repository
copy .git folder to your projet:
cp -R .git/ path/to/your/project/
switch to your project and run git status
delete the temp folder if your are finished.
hope this will help someone