Gitrepo에서 삭제된 폴더 복원
폴더 안에 있는 내용을 모두 삭제했는데 폴더가 비어 있습니다.원격 저장소에 복사본이 남아 있었습니다.하지만 내가 했을 때git pull
삭제된 파일은 원래 그렇게 하지 않아야 하는 것은 그렇게 해서는 안 되는 것입니까?
그래서 제가 조사를 해봤는데, 당신이 파일을 되돌릴 수 있다는 것을 알았습니다.git checkout <revision> -- <name of file>
하지만 파일에서만 작동합니다.
디렉토리 내의 모든 파일을 검색하려면 어떻게 해야 합니까?
파일로 할 수 있는 모든 것, 폴더로도 할 수 있습니다.
파일이 작업 트리에서 삭제되지만 아직 커밋되지 않았습니다.
아직 색인을 작성하지 않은 경우(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 restore를 사용하여 파일 또는 폴더를 복원할 수 있습니다.
git restore --source master~1 "PATH_IN_YOUR_REPO"
여기서 master~1은 폴더를 마스터 분기에서 "1" 리비전으로 되돌립니다.
출처: https://git-scm.com/docs/git-restore
아직 변경 내용을 커밋하지 않은 경우 내용 또는 디렉터리를 되돌릴 수 있습니다.
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 2.24.0 현재 실험적인 새로운 git 명령이 있습니다: git restore
git restore --staged some/deleted/folder
저는 관련 없는 문제로 인해 일시적으로 폴더를 삭제했습니다.백업에서 복원을 시도하는 대신 실행했습니다.git restore folder/
그리고 그것은 그것을 원래 나뭇가지가 가지고 있던 것으로 복원했습니다.
삭제된 폴더를 복구하려는 경우 삭제 후 다른 커밋이 있는 경우 github.com 의 프로젝트로 이동할 수도 있습니다.
github.com 에서 폴더가 있는 마지막 커밋으로 이동합니다.커밋 메시지가 표시되고 오른쪽에 "Browse Files(파일 찾아보기)" 버튼이 있습니다.이 옵션을 클릭하면 커밋 단계의 모든 파일로 이동합니다.
여기서 코드를 복제하거나 zip 형식으로 다운로드할 수 있습니다.
특정 파일을 지정하지 않으면 특정 커밋의 전체 내용을 가져올 수 있습니다. 예:git checkout 264794319e9695ba843cd6
(모든 파일이 올바른 상태로 해시에 저장되어 있는지 확인합니다.)
ㅠㅠpull
파일을 복원하는 것이 아닙니다. Git는 삭제 내용을 최신 변경 사항으로 보고, 끌어다 놓은 내용 위에 해당 변경 사항을 참조하십시오.
(새로운 지점에서 실험하는 것을 추천합니다.)
Git 명령 없이 복구해야 하는 경우 다음을 수행합니다.
Github Desktop이 있다면 모든 것을 쉽게 만들 것입니다.
그렇지 않은 경우 설치하고 로그인합니다.
파일로 이동
리포지토리 복제
리포지토리 선택
기록 클릭
- 폴더/파일 삭제에 사용된 커밋을 마우스 오른쪽 단추로 클릭합니다.
커밋에서 변경 내용 되돌리기 옵션 선택
이제 푸시 오리진을 클릭하십시오.
- 준비 완료!삭제된 파일/폴더를 복구했습니다. 리포지토리에서 확인할 수 있습니다.
커밋되지 않은 삭제의 경우 다음과 같이 간단합니다.
git reset HEAD rel/path/to/deleted/directory/*
gitbash를 사용하여 폴더를 복원할 수 있습니다.
먼저 명령: git status를 실행합니다. 그러면 루트 폴더와 모든 파일을 볼 수 있습니다.
예를 들어 lib라는 루트 폴더를 삭제했다고 가정해 보겠습니다.
파일:lib/commands/123
lib/commands/123/456
lib/commands/123/456/789/etc
git 명령을 사용하여 복원: git restore *lib
언급URL : https://stackoverflow.com/questions/30875205/restore-a-deleted-folder-in-a-git-repo
'programing' 카테고리의 다른 글
jQuery를 사용하여 양식 값을 동적으로 입력 (0) | 2023.08.24 |
---|---|
/var/lib/mysql 디렉토리를 복사하는 것이 mysqdump의 좋은 대안입니까? (0) | 2023.08.24 |
테이블에 외래 키를 추가하는 데 문제가 발생했습니다. (0) | 2023.08.24 |
virtualenv를 사용하여 '--no-site-packages' 옵션 되돌리기 (0) | 2023.08.24 |
인덱스에 대해 테이블스페이스가 다른 논리적인 이유가 있습니까? (0) | 2023.08.24 |