[git] ! [rejected] master -> master (fetch first)

Is there a good way to explain how to resolve "! [rejected] master -> master (fetch first)'" in Git?

When I use this command $ git push origin master it display an error message.

! [rejected]        master -> master (fetch first)
error: failed to push some refs to '[email protected]:zapnaa/abcappp.git'

This question is related to git github git-push

The answer is


The answer is there, git is telling you to fetch first.

Probably somebody else has pushed to master already, and your commit is behind. Therefore you have to fetch, merge the changeset, and then you'll be able to push again.

If you don't (or even worse, if you force it by using the --force option), you can mess up the commit history.

EDIT: I get into more detail about the last point, since a guy here just gave the Very Bad Advice of using the --force option.

As git is a DVCS, ideally many other developers are working on the same project as you, using the same repository (or a fork of it). If you overwrite forcefully with your changeset, your repository will mismatch other people's, because "you rewrote history". You will make other people unhappy and the repository will suffer. Probably a kitten in the world will cry, too.

TL;DR

  1. If you want to solve, fetch first (and then merge).
  2. If you want to hack, use the --force option.

You asked for the former, though. Go for 1) always, even if you will always use git by yourself, because it is a good practice.


--force option worked for me I used git push origin master --force


This worked for me:

$ git add .
$ git commit -m "commit"
$ git push origin master --force

You can use the following command: First clone a fresh copy of your repo, using the --mirror flag:

$ git clone --mirror git://example.com/some-big-repo.git

Then follow the codes accordingly:

Adding an existing project to GitHub using the command line

Even if that doesn't work, you can simply code:

$ git push origin master --force 

or

$ git push origin master -f

Try this git command

git push origin master --force

or short of force -f

git push origin master -f


Problem Solved

Problem I had

! [rejected]        master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/repo_name/repo-hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g.hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

I also had the same problem. The problem is that your commits in other repositories were not successfully pushed so you need to run the following commands:

  1. git fetch origin master

    output: From https://github.com/username/repo-name * branch master -> FETCH_HEAD

  2. git merge origin master

    output: Merge made by the 'recursive' strategy. repo-name/ReadMe.md | 1 - 1 file changed, 1 deletion(-)

  3. git push

    output: Enumerating objects: 8, done. Counting objects: 100% (8/8), done. Delta compression using up to 8 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 1.00 KiB | 1.00 MiB/s, done. Total 6 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 1 local object. To https://github.com/user_name/repo-name.git 0852d5vf..70v56d9 master -> master

Thank You so much


Its Simple use this command:

git push -f origin master

and it will get your work done


It's likely that someone else (e.g. your colleague) has put commits onto origin/master that aren't in your local master branch, and you are trying to push some commits from your local branch to the server. In 99% of cases, assuming you don't want to erase their work from origin, you have two options:

2) Merge their changes into your local branch, and then push the merged result. git checkout master git pull # resolve conflicts here git push

(Note that git pull is essentially just a git fetch and a git merge in this case.)

1) Rebase your local branch, so that it looks like your colleague made their commits first, and then you made your commits. This keeps the commit history nice and linear - and avoids a "merge commit". However, if you have conflicts with your colleague's changes, you may have to resolve those conflicts for each of your commits (rather than just once) in the worst case. Essentially this is nicer for everyone else but more effort for you. git pull --rebase # resolve conflicts here git push

(Note that git pull --rebase is essentially a git fetch and a git rebase origin/master.)


Quickest solution-

  1. DO a git log-> You will see someone probably has pushed some code post the time you had pulled the latest codebase.
  2. DO a git pull --rebase, this will first, rewind head to replay your work on top of it and then apply your committed changes to the same.
  3. You are now all set for a git push.

try:

git fetch origin master
git merge origin master

After to wrote this code I received other error: (non-fast-forward)

I write this code:

git fetch origin master:tmp
git rebase tmp
git push origin HEAD:master
git branch -D tmp

And resolved my problem


Your error might be because of the merge branch.
Just follow this:

step 1 : git pull origin master (in case if you get any message then ignore it)
step 2 : git add .
step 3 : git commit -m 'your commit message'
step 4 : git push origin master


As it is stated in the Error message you have to "fetch first." This worked for me. Use the command:

  1. git fetch origin master

Then follow these steps to merge:

  1. git pull origin master
  2. git add .
  3. git commit -m 'your commit message'
  4. git push origin master

enter image description here

! [rejected] master -> master (fetch first) error: failed to push some refs to '[email protected]:'

enter image description here

Successfully solved the problem using --force command. so, you must used
git push origin master --force


This worked for me, since none of the other solutions worked for me. NOT EVEN FORCE!

https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line

Just had to go through Git Bash

cd REPOSITORY-NAME
git add .
git commit -m "Resolved merge conflict by incorporating both suggestions."

Then back to my cmd and I could: git push heroku master which in my case was the problem.


Use this command:

git push -f origin master --force

First, You should use git pull, then command do a git fetch and next do the git merge.

If you use a git push origin master --force command, you may have problems in the future.


The reason it happened in my case was when creating the GitHub rep link, I initialized it with README file

While creating Git remote do not initialize it with README file otherwise it would show err

Don't do that & it will definitely work fine Instead initialize it with the readme file if you wish to after pushing to the master branch


i tought it's because the connection but i use this:

git push --force origin master


I overcame this by checking-out a new branch like this :

# git checkout -b newbranch <SHA of master>

# git branch
* newbranch
  master

# git push -u <repo_url_alias> newbranch

You are left with 2 branch : Master and newbranch , that you can manage to merge later.


Follow the steps given below as I also had the same problem:

$ git pull origin master --allow-unrelated-histories 

(To see if local branch can be easily merged with remote one)

$ git push -u origin master 

(Now push entire content of local git repository to your online repository)


this work for me

  1. git init

  2. git add --all

3.git commit -m "name"

4.git push origin master --force


Please try this command to solve it -

git push origin master --force

Or

 git push origin master -f

You should use git pull, that´s command do a git fetch and next do the git merge.

If you use a git push origin master --force command, you may have problems in the future.


Sometimes it happens when you duplicate files typically README sort of.


You just have to mention your branch name along with your remote name.

git fetch origin
git merge origin/master

pull is always the right approach but one exception could be when you are trying to convert a none-Git file system to a Github repository. There you would have to force the first commit in.

git init
git add README.md
git add .
git commit -m "first commit"
git remote add origin https://github.com/userName/repoName.git
git push --force origin master

Examples related to git

Does the target directory for a git clone have to match the repo name? Git fatal: protocol 'https' is not supported Git is not working after macOS Update (xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools) git clone: Authentication failed for <URL> destination path already exists and is not an empty directory SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 GitLab remote: HTTP Basic: Access denied and fatal Authentication How can I switch to another branch in git? VS 2017 Git Local Commit DB.lock error on every commit How to remove an unpushed outgoing commit in Visual Studio?

Examples related to github

Does the target directory for a git clone have to match the repo name? Issue in installing php7.2-mcrypt How can I switch to another branch in git? How to draw checkbox or tick mark in GitHub Markdown table? How to add a new project to Github using VS Code git clone error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 How to add empty spaces into MD markdown readme on GitHub? key_load_public: invalid format git - remote add origin vs remote set-url origin Cloning specific branch

Examples related to git-push

Fix GitLab error: "you are not allowed to push code to protected branches on this project"? ! [rejected] master -> master (fetch first) Git - What is the difference between push.default "matching" and "simple" error: src refspec master does not match any Issue pushing new code in Github Can't push to GitHub because of large file which I already deleted Changing the Git remote 'push to' default What does '--set-upstream' do? Git push hangs when pushing to Github? fatal: 'origin' does not appear to be a git repository