Git fatal: cannot lock ref

Tommaso Guerrini picture Tommaso Guerrini · Jul 17, 2017 · Viewed 44.8k times · Source

I'm trying to create a branch on the current branch on my Ubuntu guest. Unfortunately I keep getting this error:

git checkout -b origin/feature/IF-53-change-validation-window/Tommaso
fatal: cannot lock ref 'refs/heads/origin/feature/IF-53-change-validation-window/Tommaso': 
'refs/heads/origin/branch' exists; 
cannot create 'refs/heads/origin/branch/Tommaso'

I tried git gc --prune=now as suggested here link, but keep getting the same error.

Answer

cmbuckley picture cmbuckley · Jul 17, 2017

You shouldn't be checking out branches like that. Assuming that branch exists on origin, you should do the following:

git checkout feature/IF-53-change-validation-window/Tommaso

If you run git branch I expect you will see local branches with origin in the name.

The format git checkout X is shorthand for "look for a local branch X and check that out if it exists; otherwise look for a remote branch X and check that out locally (git checkout -b X origin/X)."

If you are creating a new local branch, you will often do the following:

git checkout -b new-branch

This will create a new branch pointing at the same commit as you had checked out previously.

To fix your current state, you can likely do this (see here):

git update-ref -d refs/heads/origin/branch