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.

  • How to rewrite history on gerrit?
  • What's the meaning of 'origin' in 'git push origin master'
  • Ignoring certain files when pushing an existing repo to a new Github repo
  • How to turn on git auto-fetch?
  • Discard all changes at once using GitHub Desktop
  • Symbolic link to a hook in git
  • 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.

  • Multiple ssh keys are not working
  • Ignore folder only if it is not inside other folder
  • git: how to see changes due to push?
  • How do I turn a git clone into a fork and then push to heroku from the fork?
  • Git mode in terminal
  • Test to determine if git clone command succeeded
  • 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

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