Git 이전 버전 복원 및 배포 가이드
📋 개요
개발PC(VS Code)에서 이전 버전으로 되돌린 후, Helm 배포 서버에서 git pull origin main으로 동기화하는 워크플로우 가이드입니다.
🔄 워크플로우
graph LR
A[개발PC - VS Code] --> B[Git 커밋/푸시]
B --> C[Helm 서버]
C --> D[git pull origin main]
D --> E[helm upgrade]
- 개발PC (VS Code): 코드 수정, 커밋, 푸시
- Helm 서버:
git pull origin main→helm upgrade
🎯 목표
개발PC에서 특정 이전 버전으로 되돌린 후, Helm 서버가 단순히 git pull만으로 동일한 버전을 받을 수 있도록 하기
📝 VS Code에서 이전 버전으로 되돌리기
1. Git 히스토리 확인
Terminal에서 확인
# 최근 10개 커밋 확인
git log --oneline -10
# 더 자세한 정보
git log --pretty=format:"%h - %an, %ar : %s" -10
VS Code GUI에서 확인
- Source Control 패널 → Timeline 또는 Git History 확장 사용
- 각 커밋의 해시와 메시지 확인
2. 원하는 버전으로 Hard Reset
# 특정 커밋으로 되돌리기
git reset --hard <커밋해시>
# 예시
git reset --hard a1b2c3d4
# 또는 단계별로 되돌리기
git reset --hard HEAD~1 # 1단계 전
git reset --hard HEAD~2 # 2단계 전
git reset --hard HEAD~3 # 3단계 전
3. 강제 푸시 (Force Push)
# 원격 저장소에 강제로 덮어쓰기
git push origin main --force
# 또는
git push origin main -f
🚀 Helm 서버에서 업데이트
1. 최신 변경사항 받기
# 프로젝트 디렉토리로 이동
cd /path/to/otxecm
# 원격 저장소에서 최신 코드 받기
git pull origin main
2. 상태 확인
# 현재 커밋 확인
git log --oneline -3
# 워킹 디렉토리 상태 확인
git status
3. Helm 업그레이드
# Helm 차트 업그레이드
helm upgrade <release-name> . -f myvalues2.yaml
# 예시
helm upgrade otxecm . -f myvalues2.yaml
⚠️ 주의사항
Force Push 위험성
- 단독 작업 환경에서만 안전: 다른 개발자가 있다면 그들의 작업이 사라질 수 있음
- 협업 환경: 팀원들과 사전 협의 필요
- 백업 권장: 중요한 변경사항은 별도 브랜치로 백업
안전한 대안 방법
Revert 사용 (더 안전)
# 특정 커밋들을 되돌리는 새로운 커밋 생성
git revert <커밋해시1>
git revert <커밋해시2>
git push origin main
브랜치 백업
# 현재 상태를 백업 브랜치로 저장
git checkout -b backup-$(date +%Y%m%d-%H%M%S)
git push origin backup-$(date +%Y%m%d-%H%M%S)
# main으로 돌아가서 reset
git checkout main
git reset --hard <원하는커밋>
git push origin main --force
🛠️ 실제 사용 예시
시나리오: OTIV 서비스 URL 변경을 3단계 전으로 되돌리기
개발PC (VS Code)에서:
# 1. 현재 상태 확인
git log --oneline -5
# 출력 예시:
# f1a2b3c (HEAD -> main) Fix viewer asset URL
# e4d5c6f Update highlight service URLs
# a7b8c9d Add OTIV ingress settings
# 1a2b3c4 Initial OTIV configuration
# 9z8y7x6 Base setup
# 2. 3단계 전으로 되돌리기 (Initial OTIV configuration)
git reset --hard 1a2b3c4
# 3. 강제 푸시
git push origin main --force
Helm 서버에서:
# 1. 변경사항 받기
cd /opt/otxecm
git pull origin main
# 2. 상태 확인
git log --oneline -3
# 출력: 1a2b3c4 (HEAD -> main, origin/main) Initial OTIV configuration
# 3. Helm 업그레이드
helm upgrade otxecm . -f myvalues2.yaml
🔍 트러블슈팅
문제 1: Force Push가 거부되는 경우
# 해결 방법
git push origin main --force-with-lease
문제 2: Helm 서버에서 git pull 충돌
# 로컬 변경사항 무시하고 강제로 원격 버전 받기
git fetch origin main
git reset --hard origin/main
문제 3: 되돌린 후 다시 최신으로 복구하고 싶은 경우
# reflog에서 이전 커밋 찾기
git reflog
# 원하는 커밋으로 복구
git reset --hard <reflog의 커밋해시>
git push origin main --force
✅ 체크리스트
개발PC 작업 전:
- [ ] 현재 작업 내용 백업 (브랜치 생성)
- [ ] 되돌릴 커밋 해시 확인
- [ ] 팀원들과 협의 (협업 환경인 경우)
개발PC 작업:
- [ ]
git log --oneline -10으로 히스토리 확인 - [ ]
git reset --hard <커밋해시>로 되돌리기 - [ ]
git push origin main --force로 강제 푸시
Helm 서버 작업:
- [ ]
git pull origin main으로 최신 코드 받기 - [ ]
git status로 상태 확인 - [ ]
helm upgrade로 배포
완료 후:
- [ ] 애플리케이션 정상 동작 확인
- [ ] 로그 확인
- [ ] 필요시 추가 테스트
작성일: 2025-09-22
작성자: GitHub Copilot
버전: 1.0
적용 환경: 단독 개발 환경에서 개발PC → Helm 서버 배포 파이프라인