Git pull and push don't work

git
16,209

assuming that you have write access to your personal git server, what you are doing is pushing changes to a non-bare repository, and to a branch that are currently checked out as working directory.

The current common good practices is always push to a bare repository. To create it, you could do something like this:

git init --bare SomeRepo.git

if you insist on pushing to a non-bare repository, which is not recommended, make sure that the branch that you are going to push to is not the current checked out branch or the current working directory. just open a command line tools, such as terminal in Linux or git bash in windows, move to your repository directory (the one that has a folder .git in it), execute this command:

git branch -v

it will show all the available branches of that repository, and the branch that currently checked out is marked with '*', for example:

* master        b0bb0b1 some commit message
  development   babbab2 some other commit message
  experimental  bebbeb3 some commit message in experiment

the example above shows that master is the currently checked out branch, thus you couldn't push to it. But you could push to other branches, such as development or experimental. If you must push to master, you could do it by changing the current directory to other branches, using this command:

git checkout the_branch_name

after this, the currently checked out is the branch that specified in above command, pushing to master is now possible.

Share:
16,209

Related videos on Youtube

Jānis Gitendorfs
Author by

Jānis Gitendorfs

Updated on June 25, 2022

Comments

  • Jānis Gitendorfs
    Jānis Gitendorfs almost 2 years

    I cloned an empty repository from a personal git server. After initial push (push -u origin master) I got some error but I pushed inside.

    Trying to use git push displays the following:

    No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'. fatal: The remote end hung up unexpectedly error: failed to push some refs to 'link-top-repository'

    Then I tried git push origin master:

    Counting objects: 3, done.
    Writing objects: 100% (3/3), 218 bytes, done.
    Total 3 (delta 0), reused 0 (delta 0)
    remote: error: refusing to update checked out branch: refs/heads/master
    remote: error: By default, updating the current branch in a non-bare repository
    remote: error: is denied, because it will make the index and work tree inconsistent
    remote: error: with what you pushed, and will require 'git reset --hard' to match
    remote: error: the work tree to HEAD.
    remote: error: 
    remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
    remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
    remote: error: its current branch; however, this is not recommended unless you
    remote: error: arranged to update its work tree to match what you pushed in some
    remote: error: other way.
    remote: error: 
    remote: error: To squelch this message and still keep the default behaviour, set
    remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
    

    Problem starts when using git pull:

    Your configuration specifies to merge with the ref 'master' from the remote, but no such ref was fetched.

    I tried to check .git/config but it seems correct.

    [core]
            repositoryformatversion = 0
            filemode = true
            bare = false
            logallrefupdates = true
            ignorecase = true
    [remote "origin"]
            fetch = +refs/heads/*:refs/remotes/origin/*
            url = [email protected]:/repository/regulator
    [branch "master"]
            remote = origin
            merge = refs/heads/master
    [branc "master"]
            remote = origin
    

    Any suggestions?

  • Jānis Gitendorfs
    Jānis Gitendorfs over 11 years
    Removed that 2 lines. But nothing changed. All same.
  • Rawkode
    Rawkode over 11 years
    Looks like to pushing to a non-bare repository. Why is that?
  • Jānis Gitendorfs
    Jānis Gitendorfs over 11 years
    so i need to create repository which is --bare ?
  • Rawkode
    Rawkode over 11 years
    If that is your "central" repository, then yes, it should be bare. Means it can't be modified locally and your pushes won't cause problems.