"git rm" 이후 복원

"git rm" 이후 복원

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 initgit rm명령은 "안전"합니다 .

$  git rm * 
fatal: pathspec '*' did not match any files

Q는 init와 rm 사이에 일어나는 일을 숨깁니다. git add로 해야되나요?

관련 정보