adrian-altner.com/scripts/squash-history.sh
2026-03-30 14:16:43 +02:00

23 lines
648 B
Bash
Executable file

#!/usr/bin/env bash
# squash-history.sh — Replaces entire git history with a single "init" commit.
# WARNING: Destructive and irreversible. Force-pushes to remote.
set -euo pipefail
COMMIT_MSG="${1:-init}"
REMOTE="${2:-origin}"
BRANCH="main"
TEMP="temp-squash-$$"
echo "⚠️ This will destroy all git history and force-push to $REMOTE/$BRANCH."
read -r -p "Continue? [y/N] " confirm
[[ "$confirm" =~ ^[Yy]$ ]] || { echo "Aborted."; exit 0; }
git checkout --orphan "$TEMP"
git add -A
git commit -m "$COMMIT_MSG"
git branch -D "$BRANCH"
git branch -m "$TEMP" "$BRANCH"
git push --force "$REMOTE" "$BRANCH"
echo "Done. $(git log --oneline)"