"gitrm -r"을 되돌리는 방법?
내가 실수로 말했습니다.git rm -r .
어떻게 하면 이 상태를 회복할 수 있습니까?
저는 저지르지 않았습니다.
모든 파일이 삭제 표시되어 있고 로컬 체크아웃에서도 물리적으로 제거된 것 같습니다.
편집: (명령을 알고 있다면) 마지막 커밋으로 되돌릴 수 있습니다.하지만 제가 그 일을 취소할 수 있다면 훨씬 더 좋을 것입니다.git rm -r .
왜냐하면 나는 내가 마지막 커밋 이후와 그 이전에 무엇을 했는지 정말로 확신할 수 없기 때문입니다.git rm -r .
.
git reset HEAD
해야 돼요.중요한 커밋되지 않은 변경사항이 없는 경우
git reset --hard HEAD
마지막 커밋으로 모든 것을 강제로 재설정해야 합니다. 않은 변경사항이 첫 변경사항을 커되않변있이첫다지저작니로 합니다.git stash
:
git stash
git reset --hard HEAD
git stash pop
몇 개의 파일을 저장하고 다음 커밋 전에 변경 작업을 계속했습니다. 이 파일들 중 일부가 다시 필요하다는 것을 깨달았을 때 말이죠.다음과 같은 경우에는 저장 및 재설정하는 대신 누락/제거한 개별 파일을 간단히 확인할 수 있습니다.
git checkout HEAD path/to/file path/to/another_file
이렇게 하면 커밋되지 않은 다른 변경 사항은 해결 방법 없이 그대로 유지됩니다.
일부 단일 파일 또는 폴더를 복구하려면 다음을 사용합니다.
git reset -- path/to/file
git checkout -- path/to/file
먼다음대인항다만다듭니시목을저덱에 대한 됩니다.path/to/file
파일을 마지막 커밋에서와 같이 다시 만듭니다.HEAD
.
힌트: 두 명령 모두에 커밋 해시를 전달하여 이전 커밋에서 파일을 재생성할 수 있습니다.봐git reset --help
그리고.git checkout --help
상세한 것은
ungitrm
git rm file # delete file & update index
git checkout HEAD file # restore file & index from HEAD
gitrm -r 실행 취소
git rm -r dir # delete tracked files in dir & update index
git checkout HEAD dir # restore file & index from HEAD
gitrm -rf 실행 취소
git rm -r dir # delete tracked files & delete uncommitted changes
not possible # `uncommitted changes` can not be restored.
Uncommitted changes
를 포함합니다.not staged changes
,staged changes but not committed
.
업데이트:
때부터git rm .
에서는 인덱스뿐 아니라 작업 중인 체크아웃의 이 디렉터리 및 하위 디렉터리에 있는 모든 파일을 삭제하므로 다음과 같은 각 변경 사항을 실행 취소해야 합니다.
git reset HEAD . # This undoes the index changes
git checkout . # This checks out files in this and child directories from the HEAD
이것은 당신이 원하는 것을 해야 합니다.체크아웃된 코드 또는 색인의 상위 폴더에는 영향을 주지 않습니다.
그렇지 않은 오래된 대답:
reset HEAD
그러면 파일에 대한 커밋되지 않은 변경 내용이 지워지지 않습니다.
은 어떤 것이든 에▁any합다니▁repeat▁to▁after▁need▁that야▁you반해복그를 반복해야 합니다.git add
사용자가 대기열에 올린 명령입니다.
위의 항목 중 하나도 작동하지 않는 경우 http://www.spinics.net/lists/git/msg62499.html 의 제안을 사용하여 데이터를 검색할 수 있습니다.
git prune -n
git cat-file -p <blob #>
변경 내용을 커밋하고 푸시한 경우 이 작업을 수행하여 파일을 다시 가져올 수 있습니다.
// Replace 2 with the # of commits back before the file was deleted.
git checkout HEAD~2 path/to/file
이미 몇 가지 좋은 답변이 있지만, 잘 작동할 뿐만 아니라 원하는 것에 매우 명시적인(무섭거나 신비롭지 않기 때문에) 약간 사용되는 구문을 제안할 수 있습니다.
git checkout <branch>@{"20 minutes ago"} <filename>
목록 커밋 가져오기
git log --oneline
예를 들어 안정적 커밋에는 해시가 있습니다.45ff319c360cd7bd5442c0fbbe14202d20ccdf81
git reset --hard 45ff319c360cd7bd5442c0fbbe14202d20ccdf81
git push -ff origin master
Git 2.23+(2019년 8월)에서는 파일(및 인덱스)을 복원하는 적절한 명령을 사용해야 합니다.git restore
(아닙니다.reset --hard
또는 혼란스러운 명령)
즉, 다음과 같습니다.
git restore -s=HEAD --staged --worktree -- .
또는 약어 형태:
git restore -s@ -SW -- .
명령을 실행하는 경우git rm -r --cached .
스테이징되지 않은(커밋되지 않은) 변경 사항이 있는 리포에서 명령을 사용하여 작업(삭제에서 삭제)을 실행 취소할 수 있습니다.git restore --staged .
그래서 간단히 말해서, 취소하는 것은 git rm -r --cached .
당신은 달리기만 하면 됩니다.git restore --staged .
저도 똑같은 상황이 있었습니다.저의 경우 해결책은 다음과 같습니다.
git checkout -- .
저도 똑같은 문제가 있었습니다. 폴더 정리, 파일 재배열 및 이동이었습니다.저는 들어갔습니다. gitrm. 그리고 엔터를 누릅니다. 그리고 나서 제 장이 조금 느슨해지는 것을 느꼈습니다.운 좋게도, 저는 git commit -m "를 바로 입력하지 않았습니다.
그러나 다음 명령은
git checkout .
모든 것을 복구하고, 제 목숨을 구했습니다.
언급URL : https://stackoverflow.com/questions/2125710/how-to-revert-a-git-rm-r
'programing' 카테고리의 다른 글
Git checkout: 경로 업데이트가 분기 전환과 호환되지 않습니다. (0) | 2023.05.20 |
---|---|
제약 조건을 일시적으로 해제합니다(MS SQL). (0) | 2023.05.20 |
PostgreSQL: Postgre에서 모든 테이블의 OWNER 동시 수정SQL (0) | 2023.05.05 |
Postgresql 데이터베이스에서 null을 허용하지 않는 열을 추가하려면 어떻게 해야 합니까? (0) | 2023.05.05 |
작업 공간을 구축할 때 일식이 고착됨 (0) | 2023.05.05 |