๐Ÿงน Skrip Otomatis gh-force-clean.sh

Bersihkan branch Git yang sudah di-merge (lokal & remote) dengan aman dan cepat

Kalau kamu sering kerja di repo Git yang penuh branch lama, skrip ini bisa jadi solusi. Dengan gh-force-clean.sh, kamu bisa otomatis menghapus branch lokal dan remote yang sudah di-merge ke main (atau branch lain), tanpa repot periksa satu-satu. ๐Ÿš€

Cocok buat developer yang ingin menjaga repo tetap bersih, atau buat pipeline CI/CD yang rapi.

๐Ÿงฉ Fitur Unggulan

โš™๏ธ Isi Skrip: gh-force-clean.sh

#!/usr/bin/env bash
set -euo pipefail
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; RESET='\033[0m'
DRY_RUN=false; AUTO=false; BASE_BRANCH="main"
usage() {
 echo "Gunakan: $0 [--dry-run] [--auto] [--base ]"
 exit 0
}
while [[ $# -gt 0 ]]; do
 case "$1" in
 --dry-run) DRY_RUN=true; shift ;;
 --auto) AUTO=true; shift ;;
 --base) BASE_BRANCH="${2:-main}"; shift 2 ;;
 -h|--help) usage ;;
 ) echo "Argumen tidak dikenal: $1"; usage ;;
 esac
done
echo -e "${CYAN}๐Ÿ” Mengecek branch utama: ${BASE_BRANCH}${RESET}"
git fetch -p origin >/dev/null 2>&1
git checkout "$BASE_BRANCH" >/dev/null 2>&1 || exit 1
MERGED_BRANCHES=$(git branch --merged "$BASE_BRANCH" | grep -vE "^\*|$BASE_BRANCH$")
REMOTE_MERGED=$(git branch -r --merged "origin/$BASE_BRANCH" | grep -vE "origin/(HEAD|$BASE_BRANCH)$")
[[ -z "$MERGED_BRANCHES" ]] && echo "Tidak ada branch lokal yang sudah di-merge"
[[ -z "$REMOTE_MERGED" ]] && echo "Tidak ada branch remote yang sudah di-merge"
if [[ "$DRY_RUN" == true ]]; then
 echo "[DRY RUN] Tidak ada branch dihapus."
 exit 0
fi
if [[ "$AUTO" == false ]]; then
 read -rp "Lanjut hapus semua branch yang sudah di-merge? [y/N]: " CONFIRM
 [[ ! "$CONFIRM" =~ ^[Yy]$ ]] && { echo "Dibatalkan."; exit 0; }
fi
for BR in $MERGED_BRANCHES; do
 git branch -d "$BR" >/dev/null 2>&1 || git branch -D "$BR" >/dev/null 2>&1
done
for RB in $REMOTE_MERGED; do
 RB_NAME=$(echo "$RB" | sed 's|origin/||')
 git push origin --delete "$RB_NAME" >/dev/null 2>&1 || true
done
echo -e "${GREEN}โœ… Pembersihan selesai.${RESET}"

๐Ÿ’ก Cara Menggunakan

chmod +x gh-force-clean.sh
# Mode interaktif (manual)
./gh-force-clean.sh
# Simulasi (hanya tampilkan tanpa hapus)
./gh-force-clean.sh --dry-run
# Mode otomatis untuk CI/CD
./gh-force-clean.sh --auto
# Jika repo kamu pakai branch utama "develop"
./gh-force-clean.sh --base develop

๐Ÿง  Tips Aman