programing

이전 커밋에서 파일 복원

jooyons 2023. 5. 20. 10:45
반응형

이전 커밋에서 파일 복원

나는 몇 주 전에 했던 오래된 약속이 있습니다.해당 커밋에서 하나의 파일만 복원합니다.내가 어떻게 해야 하나요?

git checkout 'master@{7 days ago}' -- path/to/file.txt

HEAD는 변경되지 않고 로컬 파일만 덮어씁니다.path/to/file.txt

가능한 리비전 사양은 mangit-rev-parse를 참조하십시오(물론 간단한 해시).dd9bacb) 잘 될 것입니다.

(검토 후...) 변경 사항을 커밋하는 것을 잊지 마십시오.

  1. 다음을 통해 이전 커밋에서 파일을 체크아웃합니다.git checkout [Revision_Key] -- path/to/file.
  2. 필요에 따라 추가, 커밋, 푸시를 수행합니다.

모든 답변 언급git checkout <tree-ish> -- <pathspec>git v2.23.0 기준으로 새로운 git 복원 방법이 있으며, 이 방법은 다음의 일부를 가정해야 합니다.git checkout책임이 있었습니다.github 블로그에서 변경사항의 주요 내용을 확인하십시오.

이 명령의 기본 동작은 작업 트리의 상태를 복원하는 것입니다.source매개 변수(이 경우 커밋 해시가 됩니다.

커밋 해시를 다음과 같이 가정합니다.abcdef명령은 다음과 같습니다.

git restore --source=abcdef file_name

(기본적으로) 작업 트리에 저장합니다.변경 내용을 인덱스에 직접 저장하여 즉시 커밋할 수 있도록 하려면 다음을 수행합니다.

git restore --source=abcdef --worktree --staged file_name

또는 짧은 옵션 이름을 사용합니다.

git restore -sabcdef -W -S file_name

Git에 커밋된 최근 파일을 복원해야 했습니다.따라서 반복하고 다른 관점을 제시하기 위해서는 다음 두 단계를 실행해야 합니다.

  1. git log -3
    여기에는 가장 최근의 세 가지 커밋이 표시됩니다.댓글과 작성자 이름을 읽고 원하는 정확한 버전을 좁힙니다.긴 커밋 ID(예:b6b94f2c19c456336d60b9409fb1e373036d3d71) 원하는 커밋 버전입니다.

  2. git checkout b6b94f2c19c456336d60b9409fb1e373036d3d71 -- myfile.java
    복원할 커밋 ID와 파일 이름을 전달합니다.이중 하이픈 앞뒤에 공백이 있는지 확인합니다.

그 외에도 여러 가지 방법이 있지만 이것이 제가 기억하는 가장 간단한 방법입니다.

참고: 프로젝트 경로/폴더 내부에 있는 경우 체크아웃 명령에 전체 파일 경로를 입력할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/6624036/restore-file-from-old-commit-in-git

반응형