더북(TheBook)
Q 작업 디렉터리와 준비 영역 모두 취소하려면 어떻게 해야 할까요?

A 매니페스트 파일을 수정해서 준비 영역에 추가합니다.

shinjaehun@losttemple:/etc/puppet$ echo '#test01' >> manifests/site.pp
shinjaehun@losttemple:/etc/puppet$ sudo git add manifests/site.pp
shinjaehun@losttemple:/etc/puppet$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#   modified:   manifests/site.pp
#
no changes added to commit (use "git add" and/or "git commit -a")

준비 영역에 추가해둔 상태에서 해당 파일을 다시 수정하게 되었습니다. 이렇게 되면 manifests/site.pp 파일은 작업 디렉터리와 준비 영역 양쪽에 수정 상태로 존재하게 됩니다.

shinjaehun@losttemple:/etc/puppet$ echo '#test02' >> manifests/site.pp
shinjaehun@losttemple:/etc/puppet$ git status
# On branch master
# Changes to be committed:
#    (use "git reset HEAD <file>..." to unstage)
#
# modified:  manifests/site.pp
#
# 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:  manifests/site.pp

‘git checkout --’ 하면 준비 영역에는 파일 수정 작업이 남을 것입니다. HEAD 지시자를 이용해서 작업 디렉터리와 준비 영역에 존재하는 수정 작업을 모두 취소할 수 있습니다. ‘커밋 복원하기’에서 HEAD에 대해 설명합니다.

shinjaehun@losttemple:/etc/puppet$ sudo git checkout HEAD manifests/site.pp
shinjaehun@losttemple:/etc/puppet$ git status
# On branch master
nothing to commit (working directory clean)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.