Git pull and push don't work
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
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
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@example.com:/repository/regulator [branch "master"] remote = origin merge = refs/heads/master [branc "master"] remote = origin
3 Solutions collect form web for “Git pull and push don't work”
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.
Remove this from the end of your file.
[branc "master"] remote = origin
Also – your central Git repository where your developers
push to, should be a bare repository. Your error logs show that yours isn’t.
I had a similar problem and found the answer in the Unix stack-exchange:
In my case, my local branch and remote branch had different
To resolve this I deleted my local branch
$ git branch -d branch-name,
then checked out the remote branch again using
$ git fetchand
$ git checkout Branch-name.
So deleting the local branch and checking out the remote branch again fixed it.