Merge multiple commits into one

Sometimes you will merge multiple commits into one. Maybe the commits are "dirty" full of non-working code or embarrassing commit messages. This solution is only one of multiple possible solutions. See this stackoverflow question for more details and variants.

Here is an example.

$ git log --graph --decorate --oneline
* cf634bb (HEAD -> main) english
* 722a9c7 zwei
* e59e6d0 eins
* c6990ba a
* 6dfc50b (origin/main, origin/HEAD) ix
* 10074d7 (tag: test) test
* 662e04e Initial commit

$ git status
On branch main
Your branch is ahead of 'origin/main' by 4 commits.
(use "git push" to publish your local commits)

nothing to commit, working tree clean

You want to merge the last 4 commits from a to english.

$ git reset --soft "HEAD~4"
$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

new file: a

$ git commit --amend
[main 24e0e06] English
Date: Wed May 27 13:56:28 2020 +0200
2 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 a

$ git log --graph --decorate --oneline
* 24e0e06 (HEAD -> main) English
* 10074d7 (tag: test) test
* 662e04e Initial commit

After that you can push it to remote repository via git push.

Hey there! 👋 Thank you for reading this article!

Is there something missing or do you have an idea on how to improve the documentation? Do you want to write your own article?

You're invited to contribute to the Codeberg Documentation at its source code repository, for example by Adding a pull request or joining in on the discussion in the issue tracker.

For an introduction on contributing to Codeberg Documentation, please have a look at the Contributor FAQ.

© Codeberg Docs Contributors. See LICENSE