파일 수정한 내용 checkout 직후 또는 가장 최근 커밋 직후로 되돌리기
파일을 저장소에서 워킹디렉터리로 checkout 합니다. 파일의 내용을 수정합니다. 어라? 수정하려던 파일은 bb 파일인데 aa파일을 수정했습니다. 이때 잘못 수정해버린 aa파일의 내용을 checkout 직후의 내용으로 다시 되돌리려면 어떻게 해야 할까요?

또는 최근에 소스를 수정한 후 커밋을 했습니다. bb파일을 추가적으로 수정할 부분이 떠올라 수정하려다가 알고보니 aa파일을 수정하고 있다는 사실을 알았습니다. 수정한 내용을 최근 커밋 직후로 되돌리려면 어떻게 해야 할까요?

이런 경우에는 git checkout -- [파일] 명령을 사용하는 것입니다. 다음의 예제를 보면 bb파일을 수정하려다가 aa 파일을 수정해 버렸습니다. git status로 확인하니 역시나 aa가 수정되었으니 git add 하라고 나오는군요.
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   aa


그런데 그 밑에 git checkout -- <file>을 하면 변경사항을 제거할 수 있다고 나오는군요. 알려주는대로 한번 실행해 봅니다.
$ git checkout -- aa

$ git status
On branch master
nothing to commit, working tree clean

수정내용은 사라졌고 실제 잘못 수정한 aa파일의 내용을 보아도 잘못 수정한 부분이 되돌아 갔습니다. 주의할 점은 git checkout -- [파일] 명령은 꽤 위험한 명령이라는 점입니다. 파일을 되돌리려다 열심히 수정한 멀쩡한 파일마저 되돌려버리는 참사가 발생할 수도 있습니다. 따라서 정말 필요할때만 사용합니다.


출처 - https://git-scm.com/book/en/v2/Git-Basics-Undoing-Things

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!