39
votes

I'm completely stuck as to why my git has completely locked me out. I have a laptop that I use at work and when I'm home. For both accounts I use git extensively and both are located in different paths. Today I came into work and I can't do anything, all I see is:

/Applications/MAMP/htdocs/my_site/.git/index.lock': Permission denied

For all I care the branch I'm on can be deleted. I've tried removing the branch, checking out any other branch, removing the index.lock file (as suggested by other users on sites). I only have the terminal window open, no other possible programs using git (as far as I know and nothing noticeable in the activity window). I have rebooted the computer straight into my work account and still no luck. How can I remove this lock?

8
What is the permission mask and ownership on .git and .git/index.lock?cdhowie

8 Answers

24
votes

Check which user owns the git lock:

ls -la /Applications/MAMP/htdocs/my_site/.git/index.lock

Then you can use sudo to remove it.

50
votes

I had the exact same problem wanting to commit my changes to git, and solved it this way:

  • I needed to change the group of my .git folder and its contents:

    sudo chown -R <owner>:<group> .git

  • needed to change the permission of this folder:

    sudo chmod -R 775 .git

8
votes

After updating xcode you are maybe asked for agreeing to the new license.

git init

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

When you do this

sudo git init

you'll get a root user .git dir

drwxr-xr-x 10 root XXXX 340 25 Sep 12:40 .git

If you call other git commands which create files, these files are also created for the root user.

Change the permissions or remove .git if you don't need it yet.

=> Don't ever call git with sudo!!! If your are asked to just call git on an empty directory

mkdir foo

cd foo

sudo git init

6
votes

I had this issue as I running the following command sudo git fetch && git checkout<branch>

Note the second sudo was missing. Running the following solved the issue: sudo git fetch && sudo git checkout<branch>

You shouldn't have to change the owner ship of the .git directory when running sudo.

3
votes

I was experiencing the same issue when trying to update the submodules of my repo:

$ git submodule update
fatal: Unable to create '.../.git/modules/deps/luajit/index.lock': 
   Permission denied
Unable to checkout '04dc64b558025e76a820f89a8e41840bf8269f32' in
   submodule path 'deps/luajit'

It seems the problem was the submodules belonged to a different user, so I set back the ownership to me:

cd .git/modules/
chown -R user.group *
2
votes

My computer system is Windows. When I open WSL remote vscode and local vscode in this path, system show this error. I closed remote vscode WSL and it solved this problem.

1
votes

Checking permission is surely the way. I faced this error when logged in with the wrong account. So, answer from my personal experience is:

"Be sure you logged in with the correct account".

1
votes

Change the permissions from root to the current user for the /.git folder

sudo chown username .git