Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-17 00:00
관리 메뉴

nomad-programmer

[VCS/Git] git checkout HEAD -- filename: 특정 파일을 최종 커밋 시점으로 되돌리기 본문

VCS/Git

[VCS/Git] git checkout HEAD -- filename: 특정 파일을 최종 커밋 시점으로 되돌리기

scii 2019. 12. 3. 20:36

파일 하나를 대상으로 변경 내역을 통째로 원래대로 (변경 직전의 최종 커밋 시점으로) 되돌릴 때 사용한다.

git checkout HEAD -- 파일이름

위 명령을 실행하면 파일이름 파일의 내용이 최종 커밋 시점 (HEAD 대신 다른 커밋 SHA-1 체크섬 값을 입력하면 해당 커밋 시점으로 되돌림) 으로 되돌아가게 된다.

'--' 는 포함하는 것이 좋다. git checkout 명령에 뒤따라 오는 것이 파일이라는 것을 확실하게 해주는 것이다. 만약 '--' 가 없다면, 파일이름이 브랜치 이름과 같을 경우 해당 브랜치로 체크아웃하거나, 특정 커밋 시점으로 저장소 전체가 되돌아갈 수 있다.

// example
git checkout HEAD -- README.md

cat README.md 명령을 실행하면 파일 내용이 원래대로 돌아갔음을 확인할 수 있다.

* git checkout -- 파일이름 명령은 git add 파일이름 명령을 실행한 후 추가 수정 사항이 있을 때 git add 파일이름 명령을 실행한 상태로 되돌리는 명령이다.

 

git reset 명령 역시 파일 하나를 되돌릴 수 있는 것처럼 보인다. 하지만 결정적으로 다른 부분이 있다.

git reset 명령은 hard 모드가 아니라면 저장소 디렉토리의 파일 내용은 명령을 실행한 시점 그대로 남는다. git reset 명령으로 되돌린 다음 필요한 부분만 수정 작업하고 다시 커밋할 수 있다.

하지만 git checkout 은 파일을 완전하게 대상 커밋의 시점으로 되돌린다. 파일의 내용이 대상 커밋 시점으로 완전하게 되돌아가게 되는 것이다.

즉, git reset 명령의 hard 모드를 실행한 것처럼 인덱스와 작업 전부를 되돌리게 되는 것이다.

Comments