Pushing to a remote branch (failed to update ref)

13,879

This can happen when two branches are created, one with a slash / and one without a slash, where the branch without the slash is the prefix of the other branch.

Example

Consider these two valid branch names:

  • feature
  • feature/initial-change

When you fetch these branches from the remote to your local machine the feature branch is represented as a file and the feature/initial-change branches is represented as a directory named feature and a file named initial-change. Your OS cannot create a file and directory of the same name:

  • logs/refs/heads/feature
  • logs/refs/heads/feature/initial-change

Workaround

The workaround would be to delete the feature branch in this case:

git push --force origin :feature
Share:
13,879
skbrhmn
Author by

skbrhmn

Updated on June 03, 2022

Comments

  • skbrhmn
    skbrhmn almost 2 years

    I have a remote repository with a feature/initital-change branch. Now I want to push some files to this remote branch from my local feature/initital-change branch.

    I went through a few posts on pushing to remote branches and tried out a few methods but I am still getting the same error. After adding and committing, I get the following for git status.

    Sakibs-MacBook-Pro:BluFireLabs SakibArRahman$ git status
    On branch feature/initial-change
    Your branch is ahead of 'origin/feature/initial-change' by 1 commit.
      (use "git push" to publish your local commits)
    nothing to commit, working directory clean
    

    But when I push, I get the following:

    Sakibs-MacBook-Pro:BluFireLabs SakibArRahman$ git push origin feature/initial-change
    Counting objects: 255, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (141/141), done.
    Writing objects: 100% (255/255), 6.57 MiB | 1.88 MiB/s, done.
    Total 255 (delta 49), reused 13 (delta 5)
    remote: error: Cannot update the ref 'refs/heads/feature/initial-change': unable to create directory for logs/refs/heads/feature/initial-change: No such file or directory
    To [email protected]:bluefirelabs/fire-voice-droid.git
     ! [remote rejected] feature/initial-change -> feature/initial-change (failed to update ref)
    error: failed to push some refs to '[email protected]:bluefirelabs/fire-voice-droid.git'
    

    Any idea on how I can fix this or what I am doing wrong? Thanks in advance!

  • Miguel
    Miguel almost 4 years
    This problem can also appear under Windows with upper and lower case differences. E.g. checkout "feature/myticket" and on other side it is "feature/MYTICKET".