Skip to content

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]
  1. 개발PC (VS Code): 코드 수정, 커밋, 푸시
  2. Helm 서버: git pull origin mainhelm 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 서버 배포 파이프라인