2014-09-04 3 views
0

도움이 필요합니다. 아직 파일에 repo에 추가되지 않은 파일이 있습니다. 나는 내가 그들을 unstage 싶어 결정 후 git 재설정에서 복구 - 머리 머리

git add this.php 
git add file.php 

했다 그래서 나는

git reset --hard HEAD 

지금이 파일이 사라 졌어요했다. 이 파일을 어떻게 복구 할 수 있습니까?

답변

5

당신을 위해서 다행히도, 당신은 당신의 작업 카피로부터 그들을 누크하기 전에 그 파일을 인덱스에 추가했습니다. 이 경우 이미 Git의 객체 데이터베이스에 포함되어 있습니다. (먼저 뭔가를 망칠 경우를 대비하여 백업을 만듭니다.)

git fsck (아마도 --full 플래그로)을 실행하고 "매달려있는 얼룩"을주의하십시오. 그런 다음을 사용하여 얼룩의 내용을 표시하십시오. 파일 (비슷한 버전이 여러 개있을 수 있음)을 발견하면 git show $hash > path/to/file을 사용하여 디스크에 다시 기록하십시오.

+0

와우, 얼마나 안도의. 이 작동합니다. 나는 - foo없이 fsck를 사용했기 때문에 blob이 그 파일들에 나타나지 않았다. 나는 배움이 필요해 – Angelo

0

하드 재설정 후 파일을 커밋하지 않고 복구 할 수 없습니다.

오히려 소프트/혼합 재설정을 수행해야합니다. 그러면 파일이 단절됩니다. 파일을 준비한 후에 git status을 실행하면 git에서 동일한 제안을 볼 수 있습니다.

+1

OP는'reset --hard'를 호출하기 전에 그들을 추가 했으므로 이미 Git의 객체 데이터베이스에 포함되어 있으며'git fsck'로 복구 할 수 있습니다. 그렇지 않다면 파일은 영원히 사라질 것입니다. – knittl

+0

아, 잡았다. 지금 배웠다! :-) – gravetii