Documentation/content/git/squash-commits.md
Otto Richter 2bda61e74d Diverse changes (#189)
a bunch of (typo) fixes, additions, rewordings

Update references

- remove mentions of the master branch, as it's removed for many repos
and might change in the future for others (fixes some dead links)
- remove mentions of moved repos with our official examples
- some on-the-fly additions or rewordings

Close #186 foobar->examples

Co-authored-by: fnetx <git@fralix.ovh>
Co-authored-by: fnetX <git@fralix.ovh>
Reviewed-on: https://codeberg.org/Codeberg/Documentation/pulls/189
Co-authored-by: Otto Richter <fnetx@noreply.codeberg.org>
Co-committed-by: Otto Richter <fnetx@noreply.codeberg.org>
2022-01-21 11:36:38 +01:00

1.5 KiB

eleventyNavigation
key title parent order
SquashCommits Merge multiple commits into one Git 50

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.