목차
개요
개발자로 살아가다 보면 Github 나 Gitlab과 같은 버전 컨트롤 시스템을 사용하게 된다. 거기엔 커밋(commit)이라는 것이 있다. 프로젝트가 진행됨에 따라 그 진행 상황의 스냅샷을 찍는 것과 같다. 현재 파일들의 모습을 메시지와 함께 저장해 놓는 것이다.
이 글에서는 실수로 잘못된 커밋을 했을 때 이를 되돌리는(지우는) 방법을 알아보겠다.
커밋 되돌리기
$ git commit -m "실수로 올린 잘못된 커밋"
----------------------------------------------------
$ git reset HEAD~
[ 파일 고치기 ]
$ git add .
$ git commit -c ORIG_HEAD
위 커멘드를 통해 커밋 실수를 지울 수 있다.
커멘드 설명
git reset HEAD~
실수로 올린 커밋을 지우는 커멘드이다. 파일은 건드리지 않고 가장 최근 커밋을 지운다. 해당 파일들은 나중에 다시 add 한 뒤에 커밋해야한다.
git add .
새로운 커밋에 포함하고 싶은 파일들을 add 해준다. ('git add.'는 마지막 커밋 다음에 변화된 모든 파일을 add 한다).
git commit -c ORIG_HEAD
이전 커밋 메시지로 새로운 변화를 커밋한다. reset을 사용했을 때 이전 헤드를 ORIG_HEAD에 복사해 둔다. 이전 헤드가 어떤 커밋이었는지는 git log를 사용해서 origin/HEAD 인 커밋을 찾으면 알 수 있다. 소문자 -c flag는 에디터를 열어 이전 커밋의 메시지를 편집할 수 있게 해준다. 대문자 -C flag 는 편집 없이 이전 커밋 메시지를 사용하여 변화된 파일들을 커밋한다.
마무리
git 은 개발자로서 필수적으로 사용할 수밖에 없는 도구이다. 많이 사용하며 살아가지만 어떻게 작동하는지에 대한 제대로 된 이해 없이 add, commit, push를 반복하며 사용할 때가 많다. 그러다 보니 문제가 생겼을 때 고치다가 뭔가 잘못되지 않을까 손을 떨며 작업하게 된다. 필자가 적은 글 또한 모든 상황에서의 해결책이 아니다. 각자의 상황에 따라 제대로 문제를 해결하기 위해서는, git 이 어떻게 작동하는지에 대해 큰 틀에서라도 공부를 하는 것이 좋은 자산이 될 것이라 생각한다. 오늘도 git에서 발생한 예상치 못한 문제로 골머리 앓고 있는 개발자들에게 심심한 위로를 전한다.