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
나를 위해 일한 유일한 것은 다른 폴더의 저장소를 체크 아웃하는 것입니다. 현재 저장소가 /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 checkout 264794319e9695ba843cd6
(해시가 모든 파일을 올바른 상태로 가지고 있다고 가정).
그 이유 pull
는 파일을 복원하지 않는 이유 는 git이 삭제 한 내용을 최근 변경 사항으로 간주하여 가져 오는 항목 위에 적용하기 때문입니다.
(새 브랜치에서 실험 해 보는 것이 좋습니다.)
커밋되지 않은 삭제의 경우 다음과 같이 간단합니다.
git reset HEAD rel / path / to / deleted / directory / *
참고 URL : https://stackoverflow.com/questions/30875205/restore-a-deleted-folder-in-a-git-repo
'programing tip' 카테고리의 다른 글
"UNC 경로가 지원되지 않습니다"라는 메시지없이 네트워크 공유에서 배치 파일을 실행하는 방법은 무엇입니까? (0) | 2020.10.23 |
---|---|
클릭시 특정 div로 부드럽게 스크롤 (0) | 2020.10.23 |
qtDesigner .ui 파일을 python / pyqt에 연결 하시겠습니까? (0) | 2020.10.23 |
웹뷰의 초기 확대 / 축소 / 너비를 설정하는 방법 (0) | 2020.10.23 |
Action ()에서 값을 반환하는 방법은 무엇입니까? (0) | 2020.10.23 |