I can't push now, though I could do it yesterday.
When I use
git push origin master, I get an error:
$ git remote -v
origin https://github.com/REDACTED.git (fetch)
origin https://github.com/REDACTED.git (push)
$ git push origin master
Username for ‘https://github.com’: REDACTED
Password for ‘https://[email protected]’:
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ‘https://github.com/REDACTED.git'
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.
What my working directory and remote repository looks like:
(Note: starting Oct. 2020, any new repository is created with the default branch
master. And you can rename existing repository default branch from
The rest of this 2014 answer has been updated to use "
(The following assumes
github.com itself is not down, as eri0o points out in the comments: see
www.githubstatus.com to be sure)
If the GitHub repo has seen new commits pushed to it, while you were working locally, I would advise using:
git pull --rebase
The full syntax is:
git pull --rebase origin main
git push origin main
With Git 2.6+ (Sept. 2015), after having done (once)
git config --global pull.rebase true
git config --global rebase.autoStash true
git pull would be enough.
(Note: with Git 2.27 Q2 2020, a
merge.autostash is also available for your regular pull, without rebase)
That way, you would replay (the
--rebase part) your local commits on top of the newly updated
git pull origin yourBranch).
See a more complete example in the chapter 6 Pull with rebase of the Git Pocket Book.
I would recommend a:
# add and commit first
git push -u origin main
Or git 2.37 Q2 2022+
git config –global push.autoSetupRemote true
That would establish a tracking relationship between your local main branch and its upstream branch.
After that, any future push for that branch can be done with a simple:
Again, with Git 2.37+ and its global option
push.autoSetupRemote, a simple
git push even for the first one would do the same (I.e: establishing a tracking relationship between your local
main branch and its upstream branch
See "Why do I need to explicitly push a new branch?".
Since the OP already reset and redone its commit on top of
git reset --mixed origin/main
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git push origin main
There is no need to
git reset --mixed origin/main can also be written
git reset origin/main, since the
--mixed option is the default one when using