반응형
안녕하세요.
이번 시간에는 실수로 git push를 잘못하였을 경우,
이를 안전하게 되돌리는 방법에 대하여 살펴보도록 하겠습니다.
상황 가정
만일, 다음과 같이 main 브랜치에 git push를 실수로 했던 상황을 가정해보겠습니다.
git reset --hard 1bd654f # 커밋 번호 가정
git push origin main --force
이럴 때에 "내가 작업한 커밋들이 전부 사라진 건 아닐까?" 하는 생각에 당황하기 쉽습니다.
하지만 git은 로컬 기록을 잘 관리하고 있어 침착하게 복구할 수 있습니다.
복구 방법
다음 명령어로 내역을 조회할 수 있습니다.
git reflog
그러면 다음과 같이 내역이 시간 순으로 출력되는데, 잘못 push한 내역의 이전을 기준으로
되돌리고 싶은 커밋 해시 번호를 찾아주시면 됩니다.
HEAD@{0}: reset to 1bd654f # 내가 잘못한 커밋
HEAD@{1}: reset to 3dbeee5 # 그 직전 커밋(되돌리려는 상태)
이제 되돌리려는 커밋의 위치로 다음과 같이 리셋시킵니다.
(단, 로컬에 저장된 작업 중이던 내역이 사라질 수 있으니 유의해주세요!)
git reset --hard HEAD@{1}
# 또는
git reset --hard 3dbeee5
이후, 다시 push를 진행해주시면 원상복구가 가능합니다.
(다른 사람의 작업 내용을 보호해주는 --force-with-lease 사용을 권장합니다.)
git push origin main --force-with-lease
이후, 커밋 히스토리에서 기존과 동일한 내역이 조회된다면 올바른 복구가 진행된 것입니다.
다만, 잘못된 푸시를 되돌리는 것은 위의 단계로 가능하지만
force push는 항상 팀 전체에 영향을 줄 수 있는 작업이므로
복구 후에는 반드시 팀원들에게 상황을 공유하여
다른 팀원들이 잘못된 버전을 기반으로 작업하는 혼란을 막아야 합니다.
이 글이 git 작업 과정에서 도움이 되셨기를 기원합니다.
감사합니다.
'Git' 카테고리의 다른 글
| [Git] 파이썬 프로젝트에 대하여 pre-commit 적용 방법 예시 (0) | 2025.06.14 |
|---|---|
| [Git] warning: adding embedded git repository 원인 및 해결법 (4) | 2024.10.22 |
| [Git] git pull 시 fatal: refusing to merge unrelated histories 오류 원인 및 해결 방법 (6) | 2024.10.08 |