How do I push amended commit to the remote Git repository?

I actually once pushed with --force and .git repository and got scolded by Linus BIG TIME. In general this will create a lot of problems for other people. A simple answer is “Don’t do it”.

I see others gave the recipe for doing so anyway, so I won’t repeat them here. But here is a tip to recover from the situation after you have pushed out the amended commit with –force (or +master).

  1. Use git reflog to find the old commit that you amended (call it old, and we’ll call the new commit you created by amending new).
  2. Create a merge between old and new, recording the tree of new, like git checkout new && git merge -s ours old.
  3. Merge that to your master with git merge master
  4. Update your master with the result with git push . HEAD:master
  5. Push the result out.

Then people who were unfortunate enough to have based their work on the commit you obliterated by amending and forcing a push will see the resulting merge will see that you favor new over old. Their later merges will not see the conflicts between old and new that resulted from your amending, so they do not have to suffer.

Leave a Comment