Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

git merge conflict after git amend - "Your branch and 'origin/master' have diverged"

This is what happens:

  1. After a recent commit to remote master, I make a small trivial change to my local repo
  2. I add git commit --amend and leave the same commit message as HEAD
  3. I try to push the repo to master with git push

And now I get

On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commit each, respectively.
  (use "git pull" to merge the remote branch into yours)
nothing to commit, working directory clean

I want to understand:

  1. Why this exactly happens?
  2. What can I do to prevent this?
  3. How do I reconcile master with local after a git amend?
like image 967
Amit Erandole Avatar asked Apr 08 '17 02:04

Amit Erandole


People also ask

What does it mean when your branch has diverged?

Follow. Occasionally, you or your team members may run into a diverged branch. A diverged branch means the data you're looking at locally isn't the same as what is currently stored on our servers.

How do I fix a merge conflict due to removal of a file in a branch?

Removed file merge conflicts To resolve a merge conflict caused by competing changes to a file, where a person deletes a file in one branch and another person edits the same file, you must choose whether to delete or keep the removed file in a new commit.


2 Answers

You changed an existing pushed commit, creating your own version (since its content has changed)

 --x---Y (master: that is the X amended)
    \
     --X (origin/master)

That is why you have 1 and 1 different commit each between master and origin/master

What can I do to prevent this?

Don't "amend" an existing pushed commit (only local not-yet-pushed one)

How do I reconcile master with local after a git amend?

Simply rebase on top of origin/master, then push

git rebase origin/master

 --x--X---Y' (master)
      |
(origin/master)

git push

 --x--X---Y' (master, origin/master)
like image 154
VonC Avatar answered Sep 21 '22 20:09

VonC


If you are the only one working on the project after your amend you could have run

git push -f origin master

If you are not the only one working on the project be carefull of what you do because it's rewriting history.

Here is a great article about amend :
https://medium.com/@igor_marques/git-basics-adding-more-changes-to-your-last-commit-1629344cb9a8

like image 42
LurkRedemption Avatar answered Sep 23 '22 20:09

LurkRedemption