diff --git a/git_update.sh b/git_update.sh new file mode 100644 index 0000000..761a60f --- /dev/null +++ b/git_update.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +# Git 최신 소스 자동 업데이트 스크립트 +# 서버에서 안전하게 최신 소스를 받기 위한 스크립트 + +echo "==========================================" +echo "Git 최신 소스 업데이트 시작" +echo "==========================================" + +# 현재 시간 출력 +echo "시작 시간: $(date)" + +# Git 상태 확인 +echo "현재 Git 상태 확인 중..." +git status + +# 현재 브랜치 확인 +CURRENT_BRANCH=$(git branch --show-current) +echo "현재 브랜치: $CURRENT_BRANCH" + +# 로컬 변경사항이 있는지 확인 +if ! git diff-index --quiet HEAD --; then + echo "⚠️ 로컬에 커밋되지 않은 변경사항이 있습니다." + echo "변경사항을 stash에 저장합니다..." + git stash push -m "Auto-stash before pull at $(date)" + echo "✅ 변경사항이 stash에 저장되었습니다." +fi + +# 원격 저장소 정보 업데이트 +echo "원격 저장소 정보 업데이트 중..." +git fetch --all --prune + +# 현재 브랜치의 원격 브랜치와 비교 +REMOTE_BRANCH="origin/$CURRENT_BRANCH" +LOCAL_COMMIT=$(git rev-parse HEAD) +REMOTE_COMMIT=$(git rev-parse $REMOTE_BRANCH 2>/dev/null) + +if [ "$LOCAL_COMMIT" = "$REMOTE_COMMIT" ]; then + echo "✅ 이미 최신 버전입니다." +else + echo "새로운 업데이트가 있습니다. 최신 소스를 받습니다..." + + # 강제로 최신 소스 받기 (로컬 변경사항 무시) + echo "원격 브랜치로 강제 리셋 중..." + git reset --hard $REMOTE_BRANCH + + # 추적되지 않는 파일들 정리 + echo "추적되지 않는 파일들 정리 중..." + git clean -fd + + echo "✅ 최신 소스 업데이트 완료!" +fi + +# 최종 상태 확인 +echo "==========================================" +echo "업데이트 후 Git 상태:" +git log --oneline -5 +echo "==========================================" + +# 완료 시간 출력 +echo "완료 시간: $(date)" +echo "✅ Git 최신 소스 업데이트가 완료되었습니다!" + +# stash 목록이 있으면 알림 +STASH_COUNT=$(git stash list | wc -l) +if [ $STASH_COUNT -gt 0 ]; then + echo "" + echo "📝 참고: stash에 저장된 변경사항이 $STASH_COUNT개 있습니다." + echo " 필요시 'git stash pop'으로 복원할 수 있습니다." +fi + +echo "=========================================="