| # use it as: > squash_last_n_commits 2
|
|
|
| squash_last_n_commits()
|
| {
|
| if [ $# -ne 1 ] || [ "$1" -lt 2 ]; then
|
| echo 'squash_last_n_commits() requires a number (>1) as the only argument ("HEAD~$1")'
|
| else
|
| echo "Creating '__pre_squash__state__' tag, just in case."
|
| git tag "__pre_squash__state__"
|
| git reset --soft HEAD~$1 &&
|
| git commit --edit -m"$(git log --format=%B --reverse HEAD..HEAD@{1})"
|
| if [ $? -ne 0 ]; then
|
| echo "Squash operation aborted. Resetting to previous state."
|
| git reset "__pre_squash__state__"
|
| fi
|
| git tag -d "__pre_squash__state__"
|
| fi
|
| }
|