Amend a commit that wasn't the previous commit

Git

Git Problem Overview


Frequently I'll have a workflow like the following:

  1. Commit changes to a group of files
  2. Commit changes to a different group of files
  3. Realize I missed some changes that belong in the first commit
  4. Curse

I can't make use of git commit --amend because it's not the most recent commit that I need to change. What's the best way to add changes to the first commit without touching the second one?

Git Solutions


Solution 1 - Git

You can use git rebase to solve this. Run git rebase -i sha1~1 where sha1 is the commit hash of the one you want to change. Find the commit you want to change, and replace "pick" with "edit" as described in the comments of the rebase editor. When you continue from there, you can edit that commit.

Note that this will change the sha1 of that commit as well as all children -- in other words, this rewrites the history from that point forward. You can break repositories doing this, but if you haven't pushed, it's not as much of a big deal.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRobert SpeicherView Question on Stackoverflow
Solution 1 - GitDaenythView Answer on Stackoverflow