database/git-update.sh

83 lines
2.1 KiB
Bash

#!/bin/bash
# Git 강제 업데이트 전용 스크립트
echo "=== Git 강제 업데이트 ==="
echo ""
if [ ! -d ".git" ]; then
echo "❌ Git 저장소가 아닙니다."
echo "다음 명령어로 저장소를 클론하세요:"
echo "git clone http://39.117.244.52:3000/chpark/database.git"
exit 1
fi
# 현재 상태 표시
echo "📋 현재 Git 상태:"
git status --short
echo ""
# 현재 브랜치 확인
CURRENT_BRANCH=$(git branch --show-current)
echo "현재 브랜치: $CURRENT_BRANCH"
echo ""
# 백업 옵션
if [ "$1" = "--no-backup" ]; then
echo "⚠️ 백업 없이 강제 업데이트합니다."
else
# 변경사항이 있으면 백업
if ! git diff --quiet || ! git diff --cached --quiet; then
echo "💾 로컬 변경사항을 백업합니다..."
STASH_NAME="backup-$(date '+%Y%m%d-%H%M%S')"
git stash push -m "$STASH_NAME"
echo "✅ 백업 완료: $STASH_NAME"
echo ""
fi
fi
# 원격 저장소 정보 업데이트
echo "📡 원격 저장소 정보 가져오는 중..."
git fetch origin
# 강제 리셋
echo "🔄 최신 소스로 강제 업데이트 중..."
git reset --hard origin/$CURRENT_BRANCH
# 추적되지 않는 파일 정리
echo "🧹 불필요한 파일 정리 중..."
git clean -fd
echo ""
echo "✅ Git 강제 업데이트 완료!"
echo ""
# 업데이트 결과
echo "📊 업데이트 결과:"
echo "최신 커밋:"
git log --oneline -3
echo ""
echo "변경된 파일 (최근 커밋):"
git diff --name-only HEAD~1 HEAD 2>/dev/null || echo "변경된 파일이 없습니다."
echo ""
# Stash 목록 표시
STASH_COUNT=$(git stash list | wc -l)
if [ $STASH_COUNT -gt 0 ]; then
echo "💾 백업된 변경사항 ($STASH_COUNT개):"
git stash list | head -5
if [ $STASH_COUNT -gt 5 ]; then
echo "... 그리고 $((STASH_COUNT - 5))개 더"
fi
echo ""
echo "백업 복원 방법:"
echo " 최근 백업 복원: git stash pop"
echo " 특정 백업 복원: git stash apply stash@{번호}"
echo " 백업 목록 보기: git stash list"
fi
echo ""
echo "🚀 이제 데이터베이스를 시작하려면:"
echo " ./start-all-db.sh"