git 소스 작업내역 완전 초기화 (git reset, git clean 사용법)
git을 사용하다 보면, 그동안 작업하면 수정 내역을 완전히 초기화,
즉, 처음 git clone 내려받은 원본 상태로 되돌리고 싶은 경우가 있습니다.
물론 그냥 간단하게 다시 git clone을 수행하면 원본 소스를 얻을 수 있지만
소스 용량이 크거나 인터넷이 느린 특수한 환경에서 전체 소스를 git clone으로 다시 내려받지 않고
기존에 작업하던 소스를 재활용하여 초기화가 필요한 상황이 있을 수 있습니다.
$ git status
Changes not staged for commit: ... modified: ... <-- 수정된 파일들 Untracked files: ... <-- 새롭게 추가된 파일 및 디렉토리 |
git status 명령으로 확인했을때 빨간색으로 표시되는
"Changes not staged for commit:" 나 "Untracked files:" 들을 삭제하고 싶은 상황입니다.
< 1차 초기화 : reset 명령 >
$ git reset --hard
git reset 명령을 수행하면 "Changes not staged for commit:" 리스트의 모든 변경사항이 제거됩니다.
하지만 기존 파일의 diff 내역만 삭제되고, 새롭게 추가된 파일이나 디렉토리는 아직 그대로 남아있습니다.
< 2차 초기화 : clean 명령 >
$ git clean -fd
clean 명령에 -f 와 -d 옵션을 추가해 주면 "Untracked files:" 에 해당하는 파일과 디렉토리가 모두 삭제됩니다.
파일만 삭제하고 싶다면 -f, 디렉토리만 삭제하고 시다면 -d 옵션을 분할해서 사용해도 됩니다.
< 결론 >
git reset --hard 와 git clean -fd 명령 2개면, git 변경사항을 완전히 git clone 초기 상황으로 되돌릴 수 있습니다.
단! 위 명령을 수행해서 초기화된 경우, 변경사항을 다시 되살리는건 불가능하니 사용에 주의하시기 바랍니다.
END