Created
June 12, 2013 15:31
-
-
Save jbub/5766366 to your computer and use it in GitHub Desktop.
git squash last two commits into one
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| git rebase --interactive HEAD~2 | |
| # we are going to squash c into b | |
| pick b76d157 b | |
| pick a931ac7 c | |
| # squash c into b | |
| pick b76d157 b | |
| s a931ac7 c | |
| # after that just edit the commit message | |
| # This is a combination of 2 commits. | |
| # The first commit's message is: | |
| b | |
| # This is the 2nd commit message: | |
| c |
Great gist. FYI for convenience you can make the parameter of the fixup git alias optional and set it to a default value of 1 by replacing ${1} with ${1-1}, e.g.:
fixup = "!f(){ git reset --soft HEAD~${1-1} && git commit --amend -C HEAD; };f"
So then you can just do:
git fixup # merges the last commit into its parent
Thank you! this comments are golden!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Merge the last 3 commits
git reset --soft HEAD~2 # notice this is 2, not 3 git commit --amendFrom:
to:
commit 1 # this will include commit 2 and commit 3Non-interactively
git reset --soft HEAD~2 git commit --amend -C HEAD # this will automatically pick `commit 1` as the commit nameConfig
I have this in my git config:
And I use it as
git fixup 2 # merges the last 2 commits into their parent