yeonghoon.kim

  • 게시판
  • 갤러리

Git revert는 기록을 지우는 게 아니라 되돌리는 기록을 남기는 것

김영훈 2026.06.29 12:31 조회 수 : 19

운영 매뉴얼에 Git revert 절차를 정리함.

Kubernetes GitOps 방식에서는 Git이 운영 기준이라, 잘못된 변경도 서버에서 몰래 고치는 것보다 Git에서 되돌리는 게 맞음.

revert는 기존 커밋을 지우는 명령이 아님.

해당 커밋의 변경을 반대로 적용하는 새 커밋을 만드는 방식.

즉, 기록을 없애는 게 아니라 “되돌렸다는 기록”을 남김.

기본 흐름.

장애 원인으로 의심되는 변경 확인
-> 되돌릴 커밋 확인
-> 커밋 전체 변경 파일 확인
-> 실제 변경 내용 확인
-> revert 실행
-> push
-> ArgoCD 반영 확인
-> 서비스 확인

급하다고 바로 revert하면 안 됨.

먼저 repo 상태 확인.

# cluster-apps repo로 이동한다.
cd /home/ioniere/gitlab-project-clones/ioniere/cluster-apps
# 현재 branch와 수정 중인 파일이 있는지 확인한다.
git status --short --branch

수정 중인 파일이 있으면 바로 revert하지 않음.

로컬에서 아직 commit되지 않은 변경은 revert 대상이 아님.

최근 커밋 확인.

# 최근 커밋 목록을 짧게 확인한다.
git log --oneline --decorate -n 20

후보 커밋이 어떤 파일을 바꿨는지 확인.

# 되돌릴 후보 커밋이 어떤 파일을 바꿨는지 확인한다.
git show --stat <commit-hash>

실제 변경 내용 확인.

# 특정 파일에서 후보 커밋이 무엇을 바꿨는지 확인한다.
git show <commit-hash> -- <file-path>

Secret 파일이나 민감값이 들어갈 수 있는 파일은 내용 출력하지 않음.

revert해도 되는 경우.

커밋 이후 장애가 시작됨
변경 내용이 장애 증상과 관련 있음
되돌려도 데이터 손상 가능성이 낮음
되돌린 뒤 확인할 서비스가 명확함

바로 revert하지 않는 경우.

여러 서비스 변경이 한 커밋에 섞여 있음
merge commit임
DB, PVC, Secret, 인증 설정 변경이 포함됨
영향 범위를 설명하기 어려움
이미 다른 사람이 같은 파일을 다시 수정함

대상 커밋이 맞다고 판단되면 revert.

# 대상 커밋을 되돌리는 새 커밋을 만든다.
git revert --no-edit <commit-hash>

충돌이 나면 멈춤.

# revert 중 충돌이 났는지 확인한다.
git status --short

해결 방향을 확신할 수 없으면 중단.

# 진행 중인 revert를 중단하고 revert 전 상태로 돌아간다.
git revert --abort

push 전 확인.

# 최근 커밋에 revert 커밋이 생겼는지 확인한다.
git log --oneline --decorate -n 5
# revert 커밋이 어떤 파일을 바꿨는지 확인한다.
git show --stat HEAD

원격 repo에 반영.

# revert 커밋을 원격 repo에 올린다.
git push

push 후 ArgoCD와 서비스 확인.

# ArgoCD Application의 sync와 health 상태를 확인한다.
kubectl -n argocd get applications.argoproj.io
# 변경 대상 namespace의 Pod 상태를 확인한다.
kubectl -n <namespace> get pods -o wide

웹 서비스면 Ingress VIP 직접 확인.

# 외부 DNS와 보호 프록시를 우회하고 Ingress VIP로 직접 HTTPS 응답을 확인한다.
curl -k -I --connect-timeout 3 --max-time 10 \
  --resolve "$host:443:192.168.200.49" \
  "https://$host/"

하지 않을 것.

대상 커밋 확인 없는 revert
merge commit 즉시 revert
git reset --hard
force push
Secret 파일 내용 출력
여러 커밋 한 번에 되돌리기
장애 원인과 무관한 커밋 되돌리기
ArgoCD 상태 확인 없이 작업 종료

정리.

운영 repo에서는 기록을 지우는 방식보다 되돌리는 기록을 남기는 방식이 안전함.

revert는 장애 대응 명령이기 전에, 어떤 변경을 되돌리는지 확인하는 절차가 먼저임.


  • 추천 0

  • 비추천 0
이 게시물을
목록

댓글 0

번호 제목 글쓴이 날짜 조회 수
19 DGX Kubernetes 구성 계획 김영훈 2026.06.08 25
18 Kubernetes 기본 클러스터, ingress-nginx 설치 김영훈 2026.06.09 15
17 Docker Compose 서비스를 Kubernetes로 이전(깃랩 도커 저장소 필요) [2] 김영훈 2026.06.10 20
16 yeonghoon.kim 배포 파일을 Helm Chart로 전환 [1] 김영훈 2026.06.12 18
15 SOPS age로 Kubernetes Secret 암복호화 김영훈 2026.06.15 23
14 ArgoCD와 GitOps 구조 준비 김영훈 2026.06.16 16
13 CoreDNS로 GitLab Registry 내부 주소 고정 김영훈 2026.06.17 19
12 복구 런북 초반 누락 사항 정리 김영훈 2026.06.17 15
11 SOPS Secret 복구와 ArgoCD root Application 적용 김영훈 2026.06.18 28
10 관측 스택과 앱 배포 저장소 구조 정리 김영훈 2026.06.19 23
9 ArgoCD 복구 중 GitLab 접근 문제 정리 김영훈 2026.06.22 26
8 ImagePullBackOff와 registry pull secret 누락 김영훈 2026.06.22 17
7 worker 재부팅 전 drain 절차 정리 김영훈 2026.06.26 20
6 control-plane 장애 시나리오 관찰 김영훈 2026.06.27 12
5 OutOfSync와 Degraded 구분하기 김영훈 2026.06.28 25
» Git revert는 기록을 지우는 게 아니라 되돌리는 기록을 남기는 것 김영훈 2026.06.29 19
3 Stateful과 Stateless 구분해보기 김영훈 2026.07.02 23
2 GitLab Registry PAT 만료로 이미지 Pull 실패 김영훈 2026.07.08 14
1 yeonghoon.kim php 업그레이드 김영훈 2026.07.09 0
쓰기 태그
 첫 페이지 8 9 10 11 12 13 14 15 16 17 끝 페이지