http://norbauer.com/notebooks/code/notes/git-revert-reset-a-single-file
게시물을 찾았습니다.
그러나 여전히 차이점이 무엇인지 모릅니다.
-
git checkout <filename>
-
git checkout -- <filename>
어떤 상황에서 첫 번째와 두 번째를 각각 사용해야합니까?
답변
특별한 “옵션” --
은 “이 시점 이후의 모든 인수를 파일 이름으로 취급합니다.” 라는 의미입니다. 이것은 Git 전용이 아니며 일반적인 Unix 명령 줄 규칙입니다. 일반적으로 인수가 옵션이 아닌 파일 이름임을 명확히하기 위해 사용합니다 . 예 :
rm -f # does nothing
rm -- -f # deletes a file named "-f"
git checkout
1 은 또한 --
후속 인수가 원하는 커밋을 지정하는 선택적 “treeish”매개 변수가 아님을 의미합니다.
그래서 이런 맥락에서이다 안전 사용 --
항상,하지만 당신은 필요 당신이 되돌리려 파일로 시작하는 이름이있는 경우를 -
, 또는 분기의 이름과 동일합니다. 분기 / 파일 명확성에 대한 몇 가지 예 :
git checkout README # would normally discard uncommitted changes
# to the _file_ "README"
git checkout master # would normally switch the working copy to
# the _branch_ "master"
git checkout -- master # discard uncommitted changes to the _file_ "master"
및 옵션 / 파일 명확성 :
git checkout -p -- README # interactively discard uncommitted changes
# to the file "README"
git checkout -- -p README # unconditionally discard all uncommitted
# changes to the files "-p" and "README"
이름이로 시작 하는 브랜치 가있는 경우 어떻게하는지 잘 모르겠습니다 -
. 아마도 처음에는 그렇게하지 마십시오.
이 모드에서 1 ; “체크 아웃”은 다른 여러 가지 작업도 수행 할 수 있습니다. 나는 git이 대부분의 다른 VCS처럼 “되돌리기”나 “재설정”이 아닌 “체크 아웃”하위 명령의 모드로 “커밋되지 않은 변경 사항 취소”를 구현하기로 선택한 이유를 이해하지 못했습니다.
답변
다음에 오는 모든 --
것은 파일 이름으로 처리됩니다 (프로그램 인수가 아님). 예를 들어 대시로 시작하는 파일 이름이있는 경우 이는 중요합니다.