tech.junha.kr

GIT double dash의 의미: git checkout -- filename

Git에서 특정 파일의 변경을 취소할 때 아래와 같은 커맨드를 실행한다.

$ git checkout -- path/to/file.txt

문법을 외워서 사용하고 있는데, 더블대시가 왜 나오며, 어떤 식으로 변경이 취소되는 걸까?

더블 대시는 배시에서 커맨드 옵션의 끝을 의미한다.

예를 들어, grep 명령으로 옵션 -v 가 아닌 문자열 -v 를 검색하고 싶다면,
아래와 같이 -- 로 옵션이 종료되었음을 명시할 수 있다.

$ grep -- -v file

깃 커맨드도 마찬가지로 -- 는 옵션의 끝을 의미한다.

$ git checkout -- path/to/file.txt

git chekcout 의 usage 를 보면 아래와 같이 돼있다.

git checkout [] or git checkout [] [] -- ...

위 명령에서는 [] [] 옵션의 입력이 모두 끝났음을 의미한다.

브랜치 옵션을 생략함으로써, 암묵적으로 현재 브랜치의 path/to/file.txt 파일을 다시 체크아웃 받겠다는 의미이다.
즉, 수정 사항을 취소하는 것과 동일하다.

정리

만약, index.js파일을 실수로 지웠을 때 다음과 같은 명령어를 실행하면,

$ git checkout -- index.js

현재 브랜치의 index.js파일을 다시 체크아웃 받겠다는 의미로, 수정 사항을 취소하는 것과 동일한 의미다.