Git 저장소에서 삭제 된 폴더 복원 몇 가지 조사를했고 다음을 수행하여

폴더 안의 모든 내용을 삭제했는데 폴더가 비어 있습니다. 원격 저장소에 여전히 사본이 있습니다. 하지만 내가했을 때 git pull삭제 된 파일을 되 돌리지 않았는데 그렇게해서는 안됩니까?

그래서 몇 가지 조사를했고 다음을 수행하여 파일을 되돌릴 수 있음을 확인했습니다.
git checkout <revision> -- <name of file>

그러나 그것은 파일에서만 작동합니다.

디렉토리 안의 모든 파일을 어떻게 검색 할 수 있습니까?



답변

파일로 할 수있는 모든 작업은 폴더로도 할 수 있습니다.

또한 참고 찾기 및 Git 저장소에서 삭제 된 파일을 복원

작업 트리에서 파일이 삭제되었지만 아직 커밋되지 않았습니다.

git add변경 사항을 아직 색인화하지 않은 경우 ( ) 디렉토리의 컨텐츠를 되돌릴 수 있습니다.

git checkout -- path/to/folder

삭제가 이미 색인화 된 경우 먼저 재설정해야합니다.

git reset -- path/to/folder
git checkout -- path/to/folder

전체 작업 트리 (단일 폴더가 아님)를 복원하지만 커밋되지 않은 모든 변경 사항이 손실됩니다.

git reset --hard HEAD

과거에 일부 커밋에서 파일이 삭제 된 경우 :

주어진 경로에 영향을 준 마지막 커밋을 찾습니다. 파일이 HEAD 커밋에 없기 때문에이 커밋에서 삭제해야합니다.

git rev-list -n 1 HEAD -- <file_path>

그런 다음 캐럿 ( ^) 기호를 사용하여 이전 커밋에서 버전을 확인합니다 .

git checkout <deleting_commit>^ -- <file_path>

먼 커밋에서 전체 작업 트리 복원

git reset --hard <revision>

답변

변경 사항을 아직 커밋하지 않은 경우 콘텐츠 또는 디렉토리를 되돌릴 수 있습니다.

git checkout -- removed_directory

모든 변경 사항을 되돌리려면 다음을 수행하십시오.

git reset --hard HEAD

답변

git restore를 사용하여 파일 또는 폴더를 복원 할 수 있습니다.

git restore --source master~1 "PATH_IN_YOUR_REPO"

여기서 master ~ 1 은 폴더를 마스터 브랜치에서 “1”개정으로 되돌립니다.

출처 : https://git-scm.com/docs/git-restore


답변

나를 위해 일한 유일한 것은 다른 폴더의 저장소를 체크 아웃하는 것입니다. 현재 저장소가 /home/me/current.

그런 다음

git clone /home/me/current /home/me/temp

이것은 저장소의 별도 복제본을 만듭니다. /home/me/temp

이제 /home/me/temp내가 원하는대로 가서 할 수 있습니다 . 예를 들면

git reset --hard commit-hash-before-delete

이제 삭제 된 파일 폴더를 다시 복사 할 수 있습니다.

cp -r /home/me/temp/some/deleted/folder /home/me/current/some/deleted/folder

임시 폴더를 삭제하십시오.

rm -rf /home/me/temp

의 예

git checkout -- some/deleted/folder
git checkout -- some/deleted/folder/*

작동하지 않습니다

$ git checkout -- some/deleted/folder/*
zsh: no matches found: some/deleted/folder/*
$ git checkout -- some/deleted/folder
error: pathspec 'some/deleted/folder' did not match any file(s) known to git.

같은 다른 예

git reset --hard HEAD

삭제 된 파일 외에도 파괴적입니다. 다른 모든 변경 사항도 손실됩니다.

비슷하게

git reset --hard some-commit

이후 커밋을 잃게됩니다. some-commit


답변

git 2.24.0부터 실험적인 새 git 명령이 있습니다. git restore

git restore --staged some/deleted/folder

답변

특정 파일을 지정하지 않으면 특정 커밋의 전체 내용을 가져올 수 있어야합니다. 처럼:git checkout 264794319e9695ba843cd6 (해시가 모든 파일을 올바른 상태로 가지고 있다고 가정).

그 이유 pull는 파일을 복원하지 않는 이유 는 git이 삭제 한 내용을 최근 변경 사항으로 간주하여 가져 오는 항목 위에 적용하기 때문입니다.

(새 브랜치에서 실험 해 보는 것이 좋습니다.)


답변

삭제 된 폴더를 복구하려는 경우 삭제 후 다른 커밋이있는 경우 github.com에서 프로젝트로 이동할 수도 있습니다.

github.com에서 폴더가있는 마지막 커밋으로 이동합니다. 커밋 메시지가 표시되고 오른쪽에 “파일 찾아보기”라는 버튼이 있습니다. 이것을 클릭하면 커밋 단계의 모든 파일로 이동합니다.

여기에서 코드를 복제하거나 코드를 zip으로 다운로드 할 수 있습니다.