Getting 'receive.denyCurrentBranch' error when pushing to bare Git repo

Have a remote git bare repo that onto which I’ve pushed a branch from one machine, and pulled to another machine.

Made some changes on the other machine, trying to push those changes back to the remote bare repo, and I get the ‘receive.denyCurrentBranch’ error.

  • pull instead of fetch - accidentally merged remote master into local branch
  • why git status shows “working directory clean” even after I add a new file
  • Connect my project to gitlab with android studio
  • how to grab the latest release from GitHub with JitPack?
  • Installing Git via Homebrew doesn't switch default to the Homebrew one
  • git clone fails with 403 when running git server on windows
  • What’s going on?

    This isn’t supposed to happen on a bare repo – there’s nothing checked out on it.

    The branches as seen from machine 2 are:

    Fix
    dev1
    dev2
    remotes/origin/HEAD -> origin/dev1
    remotes/origin/Fix
    remotes/origin/dev1
    remotes/origin/dev2
    remotes/origin/master
    

    ‘Fix’ is the current branch on both dev machines.

    When I originally pulled that branch on machine 2, I did:

    git pull
    git checkout -b Fix origin/Fix
    

    I’m suspicious of the first ‘remotes’ line – seems that the HEAD should be pointing to my current branch, but it isn’t. Think I’m missing something, here..

    Update 1
    I merged the ‘Fix’ branch down to the dev1 branch, and then pushd the ‘dev1’ branch – that worked ok (I was about to do that, anyway).

    So, that was a workaround, but I think the real problem was that the HEAD wasn’t tied to the current branch (‘Fix’), but to an inactive branch (‘dev1’). I’m not sure how to change the head on the remote repo?

  • Jenkins Pipeline: is it possible to avoid multiple checkout?
  • How to know if a Git tag has been moved?
  • Error when pulling warning: suboptimal pack - out of memory
  • How to show log with filtering by author date?
  • 'git pull origin mybranch' leaves local mybranch N commits ahead of origin. Why?
  • Unable to set up Git pull in Jenkins
  • One Solution collect form web for “Getting 'receive.denyCurrentBranch' error when pushing to bare Git repo”

    From the Machine 2, to upload refs from local repository to remote repository you can use explicit refs in the push command:

    git push origin Fix:refs/heads/Fix
    

    After that, in the Machine 1, you should use the fetch command to obtain the remote refs

    git fetch
    

    In the list of branches (git branch -a), you will found origin/Fix (or remotes/origin/Fix), you can browser the content of the remote branch directly by using the checkout command:

    git checkout origin/Fix
    

    Make your changes, commit, etc… and then push it using the same command used in machine 2:

    git push origin Fix:refs/heads/Fix
    

    To track the branch (this is, create a local branch that “points” the remote branch, use the checkout command with –track option):

    git checkout --track -b Fix origin/Fix
    

    Then, you can work on local branch Fix and do push and pull without other arguments

    git pull
    git commit
    git push
    
    Git Baby is a git and github fan, let's start git clone.