#!/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)"