some_dir_path
으로 git repo를 초기화했습니다 git init
. 그 후 나는 모든 파일을 repo에 포함하지 않고 게시하기로 결정했습니다 git rm -f
. 내 생각대로 디렉토리 자체가 아닌 git repo에서 모든 파일이 제거되었습니다. 이제 some_dir_path
.git 자체를 제외하고는 비어 있습니다.
ls -aR some_dir_path:
.git:
branches config description HEAD hooks index info objects refs
...
그렇다면 문제는 데이터를 검색할 수 있는 방법이 있느냐는 것입니다. 이전에 커밋을 게시한 적이 없으며 되돌릴 분기도
없습니다 .git rm -f
답변1
제출된 파일이 없으므로 이제 손실되었습니다.
커밋된 경우 발행하여 복구합니다.
git reset --hard
이렇게 하면 마지막 커밋 이후 삭제된 파일이 복원됩니다(그리고 다른 파일에 대한 변경 사항도 되돌립니다).
당신은 또한 볼 수 있습니다 git reset --help
.
답변2
아직 제출 되지 않았 git rm
으므로 프로세스는 매우 간단합니다.
시작점: "onefile"을 추가했습니다.
$ git cat-file -p HEAD:onefile
content...
$ cat onefile
content...
지금 git rm
:
$ git rm -f onefile
rm 'onefile'
$ ls
파일이 정말 없어졌습니다. git 명령이 커밋되지 않았습니다. (라인 rm 'onefile'
은산출, 명령이 아닙니다! )
현재 조언은 간단합니다. 당황하지 말고 개요를 확인하세요.
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: onefile
따라서 프롬프트를 따르십시오.
$ git reset HEAD *
Unstaged changes after reset:
D onefile
삭제가 커밋되지 않음에서 스테이지되지 않음으로 변경되었습니다.
$ git archive HEAD -o playback.tar
$ tar xf playback.tar --to-stdout
content...
git rm
제출된 경우 git reset HEAD~
a가 필수입니다.
다음 명령 이후 저장소가 비어 있으면 git init
이 git rm
명령은 "안전"합니다 .
$ git rm *
fatal: pathspec '*' did not match any files
Q는 init와 rm 사이에 일어나는 일을 숨깁니다. git add로 해야되나요?