Why do i get “error: failed to push some refs”?
I have a remote git repository and a local one that i work with. Whenever i do any changes locally, i push them to the remote. Then i sometime do a “git commit” on the remote one to store the changes on the remote files.
I do not edit the remote repository directly at all. I just commit the changes. And i’m a single developer, no one else works on that repos.
Why do i get an error that, from what i know, means that i have to pull first ?
I don’t want to pull because the remote repos files are outdated and it will lose my local changes. This is really annoying, why does this happen ? And how can i fix without having to pull or recreate the repository ? (as you can see, this is sort of like a subversion type of version control style here)
EDIT – The error :
To ssh://... ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'ssh://...' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes (e.g. 'git pull') before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
4 Solutions collect form web for “Why do i get “error: failed to push some refs”?”
What you should be doing is creating the remote repository as a bare repository. A bare repository is just the git repo, without a current checkout (that is, it is like just the contents of the
.git dir in a regular Git repo, so it contains objects and refs, but it doesn’t have an index or working copy of the file hierarchy). If you try pushing to a non-bare repository, the working copy will get out of sync with what is committed, and cause the kinds of problems you are seeing here.
You can create a bare repository using
git init --bare repo.git. Or you can clone an existing repository as a bare repo using
git clone --bare original-repo new-repo.git.
If you want to have a checked out copy of the repository on your server, you will need to create a new, non-bare repo on the server, and then pull into that repo from the bare repo that you push to.
Here is another option.
git reset --mixed origin/master git add . git commit -m "Your message" git push origin master
this always means that you didn’t synchronize the remote repository with local repo,so first you should synchronize them by using command git pull as following:
git checkout master git pull origin master
after this process ,you will synchronize them ,and then you can push changes to remote repo by followings:
git add [filename/directory] git commit -m"input your message" git remote add origin https://github.com//yourname.git git push origin master
I faced similar problem, and the following command worked.
git push –set-upstream origin master