Post

원격 브랜치의 HEAD를 특정 커밋으로 변경하는 방법

원격 브랜치의 HEAD를 특정 커밋으로 변경하는 방법

1. 개요

브랜치에 커밋한 파일을 원격 저장소에 push한 후, 이전 커밋 상태로 되돌리는 과정을 작성합니다. 새로운 요구사항에 따라 작업을 진행하던 중, 완성된 코드를 production 환경에 반영하기 전에, dev 환경에 먼저 반영하여 테스트를 진행하고자 하였습니다. 그러나 클라이언트 팀의 요청에 따라 작업 우선순위로 인해 작업을 보류하게 되었습니다.

새로운 요구사항에 맞춰 작성한 코드가 반영된 원격 저장소의 커밋을 되돌리기 원하는 커밋으로 되돌리는 방법을 작성합니다.

2. 내용

2-1. EC2 인스턴스에서 실행할 명령어 순서

1단계: 현재 상태 확인

1
2
3
git branch                      # 현재 브랜치 확인
git log --oneline -3           # 최근 3개의 커밋 확인
git rev-parse HEAD             # 현재 HEAD 커밋의 해시 확인

2단계: 현재 커밋 백업

  • 현재 브랜치의 상태를 별도의 백업 브랜치로 저장합니다.
1
2
# 현재 상태를 백업 브랜치로 생성
git branch backup-ec2-dev-$(date +%Y%m%d-%H%M%S)

3단계: 원격 저장소의 HEAD 커밋 변경

  • 원하는 커밋으로 되돌린 후, 원격 저장소에 강제로 반영합니다.
1
2
git reset --hard {HASH}                     # 원하는 커밋으로 리셋
git push origin dev --force-with-lease      # 강제 푸시

4단계: EC2 인스턴스에서 원격 저장소 변경사항 가져오기

1
2
git fetch origin --force                    # 원격 저장소 갱신
git log origin/dev --oneline -3             # 원격 브랜치 커밋 확인

5단계: 로컬 dev 브랜치를 원격과 동기화

1
git reset --hard origin/dev                  # 로컬 dev 브랜치를 원격 dev 브랜치와 동기화  

6단계: 결과 확인

1
2
3
git log --oneline -3                        # 최신 커밋 확인
git rev-parse HEAD                          # HEAD 상태 확인
git status                                  # 변경사항 여부 확인

3. 결론

원격 저장소에 커밋을 push한 이후, 특정 커밋으로 되돌리는 과정을 정리해보았습니다.

위 과정을 다음과 같이 요약할 수 있습니다:

  1. 로컬 저장소에서 원하는 커밋으로 되돌린 뒤, 이를 원격 저장소에 force push
  2. EC2 인스턴스에서 원격 저장소와 동일한 상태로 동기화
This post is licensed under CC BY 4.0 by the author.