2013-03-22 1 views
0

TL; DR 지점이 같은 이름 인 경우 git checkout으로 파일을 되돌릴 수 없습니다.git checkout overload


재미있는 문제가 발견되면 GIT 저장소에서 작업하고 있습니다. 우리는 새로운 "업로드"기능을 생성하는 "build-upload"라는 브랜치를 가지고 있습니다. "bin/build-upload"라는 파일도 있습니다.이 파일은 프로젝트를 빌드하고 프로덕션으로 업로드하는 스크립트입니다.

문제는 내가 "bin /"디렉토리에 있었고 "build-upload"파일을 수정했기 때문에 되돌리고 싶습니다. 그래서

git checkout build-upload 

을 입력하고 그 결과 나는 결과에 한 정도로 관심을 지불하지 않았다

amatiasq:~/repo/bin$ git checkout build-upload 
M bin/build-upload 
Switched to branch 'build-upload' 

, 그리고 내가 다른 지점에 있었다 실현하지 않고 작업을 계속했다. 다행히 새 변경 사항을 적용하기 전에 "bin/build-upload"가 수정되었고 이로 인해 지점이 전환 되었음이 발견되었습니다.

질문과 답변입니다. 이 모호성을 방지 할 수있는 방법이 있습니까? 분기를 바꾸거나 파일을 되돌리려면 "checkout"할 때 어떻게해야합니까?

+0

아프면 그냥하지 마세요. 브랜치와 태그를 파일과 별도의 네임 스페이스로 취급하십시오. – vonbrand

+0

분명히 그것은 의도적 인 것이 아니며, 내가 어떻게 대면해야하는지 사고 싶었던 사고였습니다. –

답변

7

git help checkout에 따르면 명령 줄에서 -- 이후의 모든 내용은 분기 또는 태그가 아닌 경로로 해석됩니다. 따라서 필요한 작업을 수행해야합니다.

3

분기 이름 앞에 모호성을 제거하려면 '-'를 입력해야합니다.

git checkout <branch> -- <paths..> 
2

당신은 build-upload은 파일 이름으로 처리 될 수 있도록 git checkout ./build-upload을 할 수 있습니다. 이것은 -r 옵션에서 -r이라는 파일을 명확히하기 위해 rm ./-r과 같은 고전적인 유닉스 트릭과 유사합니다.