https://github.com/bast/git-rebase-squash-exercise
Git rebase and commit squashing exercise.
https://github.com/bast/git-rebase-squash-exercise
Last synced: about 1 year ago
JSON representation
Git rebase and commit squashing exercise.
- Host: GitHub
- URL: https://github.com/bast/git-rebase-squash-exercise
- Owner: bast
- Created: 2016-12-07T16:36:13.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-03-11T20:50:26.000Z (about 2 years ago)
- Last Synced: 2025-04-09T20:06:41.696Z (about 1 year ago)
- Language: Python
- Size: 60.5 KB
- Stars: 10
- Watchers: 2
- Forks: 261
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Git rebase and commit squashing exercise
### Objective
In this exercise we will practice how to squash incomplete commits into one
nice commit and replay it on top of the master branch.
### Motivation
This technique is useful in situations where you need to make changes to a pull
request before it can be integrated.
### Exercise
Start the exercise by forking and cloning the repository.
The `haiku` branch represents a feature branch that is to be rebased (moved) and squashed.
On the `haiku` branch you find a script that prints a haiku:
```shell
$ python main.py
This is our haiku:
On a branch ...
by Kobayashi Issa
On a branch
floating downriver
a cricket, singing.
```
The haiku is great but the
commit history on
the `haiku` branch is not (on purpose):
```shell
$ git log --oneline
65870f9 fix a copy-paste error
47a007d completed the haiku
a3278e3 another incomplete commit
54fba21 startign to work on it (commit with a typo)
3ff39a1 forgot to add a file
7e1f903 starting working on the haiku
c50a463 initial commit
```
Your task is to rebase the `haiku` branch on top
of `master` and squash the several small "incomplete" commits into one single
self-contained cherry-pickable commit.
In other words instead of this history:

we wish to arrive at this history:

by first rebasing the commits:

and later squashing them.
Verify the history and also that the script still works after the operation.