0

Today I discovered the --no-edit for the --amend. However, it leads me to the following problem. Here the steps:

  • git clone
  • did some changes to the code
  • git add .
  • git commit --amend --no-edit
  • git push origin master

    ! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'https://me@bitbucket.org/myRepo.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.
    

Why?

Note: I'm the only one which works on that repo.

Emaborsa
  • 1,899
  • 4
  • 25
  • 45

1 Answers1

6

Amending the last commit rewrites history. If that's what you want to do, you can do that with git push --force.

The reason it tells you you're behind is because the last commit that exists both locally and remotely (aka "merge base") is the tip's parent. In that regard, you're one commit behind the remote, which already has a commit on top of the aforementioned merge base.

talshorer
  • 622
  • 3
  • 9
  • Good catch +1, I totally missed this. Essentially, the local and remote master branches _have_ diverged, because the most common commit is now the one immediately prior to the commit just rewritten. – Tim Biegeleisen Mar 05 '18 at 15:50