๐Ÿงน 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

Bagikan artikel ini:

Facebook Twitter LinkedIn
×