Gitlab commit 삭제 잘못 올린 커밋 되돌리는 git reset 명령어

Gitlab commit 삭제를 실수로 했을 때, git reset 명령어로 올바른 시점으로 되돌리는 방법에 대해 알려드립니다. 단, 이미 원격 저장소에 반영된 커밋은 상황에 따라 revert를 사용하는 게 더 안전할 수 있으니 기억해 주세요.

잘못 올린 커밋, 어떻게 판단해야 할까요?

프로젝트를 진행하다 보면 때때로 Gitlab에 커밋을 올리고 나서 “아, 이거 잘못 올렸네” 하는 순간이 있습니다. 단순히 파일 한두 개의 문제라면 금방 고칠 수 있지만, 커밋 자체를 되돌려야 한다면 먼저 중요한 점을 확인해야 합니다.

가장 먼저 볼 것은 그 커밋이 로컬에만 있는지, 아니면 원격 저장소에 이미 올라갔는지 입니다. 만약 아직 로컬에만 있다면, git reset을 이용해 원래 상태로 되돌리는 게 가장 깔끔한 방법입니다. 반대로, 공유 저장소에 이미 푸시가 이뤄진 상황이라면, git revert 명령어를 써서 안전하게 문제를 해결하는 편이 좋습니다.

git reset 명령어, 뭘 하는 것일까요?

git reset은 브랜치의 시작 지점을 과거 어느 시점으로 옮기는 역할을 합니다. 이를 쉽게 말하면 “여기서부터 다시 시작한다”는 뜻인데요, 덕분에 잘못된 커밋을 삭제하거나 취소할 때 자주 활용하게 됩니다.

그렇다면 옵션이 많은데, 각각 어떤 차이가 있을까요? 가장 많이 쓰이는 옵션은 –soft, –mixed, –hard 세 가지입니다. 간단히 정리해 보면:

옵션 동작 주로 쓰는 경우
–soft 커밋만 취소, 수정 내용 그대로 유지 커밋 메시지를 다시 쓸 때
–mixed 커밋 취소, 스테이징 영역 해제 기본적인 커밋 되돌리기
–hard 커밋, 스테이징, 수정 내용 모두 삭제 완전히 초기화할 때

특히 –hard 옵션은 한 번 쓰면 작업했던 내용들이 통째로 삭제될 수 있으니 꼭 신중히 사용하시길 바랍니다.

git reset 사용해 본 적 있으신가요?

제가 자주 하는 방법은 우선 git log로 커밋 내역을 확인한 뒤, 되돌릴 위치를 찾는 겁니다. 예를 들어 마지막 커밋만 취소하려면 git reset –soft HEAD~1처럼 입력합니다. 이렇게 하면 마지막 커밋은 없애지만, 변경된 코드는 그대로 남습니다.

만약 커밋뿐 아니라 수정한 내용 자체도 완전히 지우고 싶다면, git reset –hard HEAD~1로 실행하면 됩니다. 여러 커밋을 한번에 되돌릴 때도 이와 같은 형식으로 기준만 바꾸면 쉽게 조작할 수 있어요. 다만 숫자를 잘못 쓰면 원치 않는 내용까지 날아갈 수 있으니 해시나 위치를 꼭 두 번 확인하세요.

이미 Gitlab에 올린 커밋, reset으로 삭제해도 괜찮을까요?

이 부분이 가장 중요합니다. 이미 Gitlab commit 삭제가 된 상태에서 reset을 쓰면, 로컬만 바뀌는 게 아니라 원격 저장소 기록도 달라져 버립니다. 그러면 협업 중인 팀원들이 혼란을 겪게 돼 되도록 피해 주는 게 좋습니다.

이럴 때는 git revert를 활용하는 게 안전합니다. revert는 커밋 기록을 삭제하지 않고, 그 내용을 되돌리는 새 커밋을 만들기 때문에 협업 흐름을 깨뜨리지 않죠. 한마디로, 혼자 작업하는 로컬에서는 reset, 공유 브랜치에서는 revert가 적합한 조치입니다.

삭제한 커밋, 다시 복구는 가능할까요?

실수로 reset으로 커밋을 날렸다고 해도 너무 걱정 안 하셔도 됩니다. Git은 숨겨진 이동 기록을 남기기 때문에 git reflog로 이전 상태를 찾을 수 있거든요.

방법은 간단합니다. 먼저 git reflog로 과거 HEAD 위치를 찾고, 복구할 시점으로 다시 reset 해 주면 됩니다. 예를 들어 바로 전 위치로 돌아가려면 git reset –hard HEAD@{1} 명령을 쓰면 됩니다. 빨리 확인할수록 복구 가능성이 크니, 실수 후에는 바로 확인하는 게 좋아요.

작업 실수를 줄이고 싶다면 어떻게 할까요?

커밋을 되돌리기 전에는 git statusgit log를 꼼꼼히 확인하는 습관을 들이세요. 현재 상태와 커밋 기록을 눈으로 직접 확인하면 예상치 못한 손실을 막는 데 도움이 됩니다.

그리고 이미 원격 저장소에 반영된 커밋이라면, 혼자 감쪽같이 지우려 하기보다 팀원들과 먼저 상황을 조율하는 게 꼭 필요합니다. 여러 명이 동시에 작업 중인 브랜치에서 reset 명령어 한 번에 큰 혼란이 일어날 수 있기 때문입니다.

git reset 명령어는 빠르고 강력하지만, 기록을 뒤엎는 성격 때문에 신중히 사용해야 합니다. 반면 git revert는 기록을 그대로 남겨 협업에 적합하다는 점, 꼭 기억하세요.

GitLab 커밋 되돌리기 1분 Q&A

git reset이 언제 좋은 선택일까요?

로컬에서 커밋을 취소할 때 좋아요.

GitLab에 올린 커밋도 reset 사용해도 될까요?

가능하지만 협업 시 revert가 안전합니다.

reset 후 삭제한 커밋은 복구할 수 있나요?

reflog로 확인하면 복구 가능합니다.