put to /usr/local/bin/git-squash
execute in bash chmod +x /usr/local/bin/git-squash
use git squash
#!/bin/bash | |
git log -1 | |
read -p "Enter commit message: " COMMIT | |
BRANCH=$(git rev-parse --abbrev-ref HEAD) | |
if [[ `git status --porcelain` ]]; then | |
git add -A \ | |
&& git commit -m "$BRANCH $COMMIT" | |
fi | |
git reset --soft HEAD~$(git cherry -v master | wc -l | xargs) \ | |
&& git stash \ | |
&& git checkout master \ | |
&& git pull \ | |
&& git checkout $BRANCH \ | |
&& git merge master \ | |
&& git stash apply \ | |
&& git add -A \ | |
&& git commit -m "$BRANCH $COMMIT" \ | |
&& git push --set-upstream origin $BRANCH --force |