Git에서 한 파일의 특정 버전을 어떻게 확인할 수 있습니까?


87

git에서 한 파일의 특정 버전을 어떻게 확인할 수 있습니까?

메일 링리스트에서 다음같은 메일을 찾았습니다 .

$ git checkout HEAD~43 Makefile
$ git reset Makefile

그런데 'HEAD ~ 43'을 git log aFile찾는 방법을 모르겠습니다.을하면 어떤 'HEAD ~ 43'을 사용해야하는지 어떻게 알 수 있나요?

git reset그 파일 을 실행해야 합니까? 그것은 무엇을합니까?


"git reset <commit> <file>"은 "git checkout <commit> <file>"과 정확히 동일합니다.
Jakub Narębski

2
질문이 HEAD ~ 43 구문 (git-rev-parse에 문서화 됨)에 관한 것이라면 답을 알고있는 관련없는 문제가 아니라이 문제에 대해 질문하십시오. "무엇 HEAD ~ 45 의미 하는가, 어떻게 파일의 특정 버전을 찾기 위해"
야쿱 Narębski

lt.kernel.org/pub/software/scm/git/docs/v1.6.0.6/…lt.kernel.org/pub/software/scm/git/docs/v1.6.0.6/git- 에 따르면 reset.html , "git reset <commit> <file>"은 "git checkout <commit> <file>"과 정확히 동일하지 않습니다. "git reset <commit> <file>"은 색인에서 <file>을 되돌립니다. 작업 트리에서 <file>을 터치하지 않고 <commit>에서 "git checkout <commit> <file>"은 <commit>에서 <file>의 색인을 업데이트 한 다음 작업 트리에서 <file>을 업데이트합니다.
yoda

2
아래 답변 중 하나 Stack Overflow의 작동 방식과 같이 귀하의 질문 에 답한 경우 옆에있는 확인 표시를 클릭하여 답변을 "수락"합니다. 여기에 세부 사항 . 그러나 귀하의 질문에 대한 답변이있는 경우에만; 그렇지 않은 경우 질문에 더 많은 세부 정보를 추가하거나 (아직) 명확하지 않은 답변에 대한 의견을 추가하는 것을 고려하십시오.
TJ Crowder 2015 년

답변:


104

파일이 속한 커밋 (예 : 특정 개정판)을 알고 있습니까? 다음을 수행하십시오.

git checkout <commit> <file>

다른 명령 :

git checkout HEAD~N <file>

범위에서 파일의 버전을 가져오고 싶을 때입니다 (그리움을 위해 수행합니다).


19

HEAD~43나무 모양이므로 해시 또는 태그를 사용할 수 있습니다. 를 사용하여 파일 이름에서 treeish를 분리해야합니다 --. 그렇지 않으면 파일 이름으로 처리됩니다. 예를 들면.

git checkout v0.45 -- filename
git checkout HEAD^ -- filename
git checkout 16bb1a4eeaa9 -- filename

2

HEAD~43파일의 커밋 (버전)을 나타냅니다. 그 대신 git log파일 에서 얻은 커밋 해시를 사용할 수 있습니다 . 파일 만 원하면 파일을 실행할 필요가 없습니다 git reset. 파일을 현재 HEAD로 포워드 포트하려는 경우에만 필요합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.