답변:
git checkout 'master@{7 days ago}' -- path/to/file.txt
이것은 HEAD를 변경하지 않고 로컬 파일을 덮어 씁니다. path/to/file.txt
가능한 개정 사양 은 man git-rev-parse 를 참조하십시오 (물론 간단한 해시dd9bacb
:)가 훌륭하게 수행됩니다)
변경 사항을 커밋하는 것을 잊지 마십시오 (검토 후 ...)
revision-specification
OP의 질문 인 "복잡한"예를
shacommit~1
(ex :)를 사용 git checkout 0f4bbdcd~1 -- path/to/file.txt
하여 커밋을 즉시 가져옵니다.
git checkout [Revision_Key] -- path/to/file
.git checkout
단일 파일을 처리 할 수 있으며 (sehe의 답변 참조) 복사하여 붙여 넣을 필요가 없습니다.
HEAD
, ORIG_HEAD
또는 함께 이들의 ^
/ ~
/ @
스타일 표기법.
git에 커밋 된 최근 파일을 복원해야했습니다. 따라서 반복하고 다른 관점을 제시하려면 다음 두 단계를 실행하여이를 수행해야합니다.
git log -3
가장 최근의 커밋 3 개를 보여줍니다. 의견과 저자 이름을 읽으면 원하는 정확한 버전을 좁힐 수 있습니다. 원하는 커밋 버전에 대한 긴 커밋 ID (예 : b6b94f2c19c456336d60b9409fb1e373036d3d71)를 기록하십시오.
git checkout b6b94f2c19c456336d60b9409fb1e373036d3d71-myfile.java
커밋 ID와 복원하려는 파일 이름을 전달하십시오. 이중 하이픈 앞뒤에 공백이 있는지 확인하십시오.
다른 많은 방법이 있습니다. 그러나 이것은 내가 기억할 수있는 가장 간단한 것입니다. 희망이 도움이됩니다.
참고 : 프로젝트 경로 / 폴더 내부에있는 경우 checkout 명령에 전체 파일 경로를 입력 할 필요가 없습니다.
모든 답변은 언급 git checkout <tree-ish> -- <pathspec>
합니다. git v2.23.0부터는 새로운 git restore 메소드 git checkout
가있어 책임이있는 부분을 가정 합니다. github 블로그의 주요 변경 사항보기 .
이 명령의 기본 동작은 작업 트리에서 나오는 내용으로 작업 트리의 상태를 복원하는 것입니다. source
매개 변수 (커밋 해시) 것입니다.
커밋 해시를 가정하면 abcdef
명령은 다음과 같습니다.
git restore --source=abcdef file_name
기본적으로 작업 트리에 넣습니다. 변경 사항을 색인에 직접 저장하여 즉시 커밋 할 수있는 경우 :
git restore --source=abcdef --worktree --staged file_name
또는 짧은 옵션 이름으로 :
git restore -s=abcdef -W -S file_name