Reputation: 2803
When I run these commands from my App folder:
git add .
git commit -m "commit details"
git push
I get the error:
mycompaq@ubuntu:~/myapp$ git add .
error: insufficient permission for adding an object to repository database .git/objects
error: app/views/reviews/update.js.erb: failed to insert into database
error: unable to index file app/views/reviews/update.js.erb
fatal: updating files failed
mycompaq@ubuntu:~/myapp$
I tried this command:
chown -R user:user /project/directory
But seeing as I got in a whole load of trouble in the first place by running commands I wasn't sure about, I want to know if this is the correct solution.
What should the exact syntax be, if the user is 'Christophe', and the folder where my Rails app is stored is called 'myapp'. I mean should it be
chown -R user:christophe /myapp/app/views/reviews/update.js.erb
Upvotes: 21
Views: 35552
Reputation: 641
You accidentally committed a file or folder to git using elevated permissions and now git can't modify those objects. It is safe to recursively force ownership of all files under .git/objects/
to your current user to clear the problem.
Make sure you're inside the repository where you're getting the error.
Get your username by typing
whoami
Enter this command
sudo chown -R your_user_name .git/*
Finally
git add .
Upvotes: 64
Reputation: 351
You can give access to all the files in .git/ folder. Just run the following command:
sudo chmod a+xrw .git/*
Upvotes: 0
Reputation: 108169
chown [ -f ] [ -h ] [ -R ] Owner [ :Group ] { File ... | Directory ... }
From the man page
The chown command changes the owner of the file specified by the File parameter to the user specified by the Owner parameter. The value of the Owner parameter can be a user ID or a login name found in the /etc/passwd file. Optionally, a group can also be specified. The value of the Group parameter can be a group ID or a group name found in the /etc/group file.
About the -R option
-R
Descends directories recursively, changing the ownership for each file. When a symbolic link is encountered and the link points to a directory, the ownership of that directory is changed but the directory is not further transversed.
So
chown -R user:christophe /myapp/app/views/reviews/update.js.erb
Would change the owner of the update.js.erb
file to the user user
in the group christophe
, which is probably not what you want.
In your case changing the owner of the repo to yourself, i.e.
sudo chown -R christophe /path/to/your/local/repo
should suffice.
If you don't know your user name, you can find it out with the whoami
command.
Upvotes: 28