Восстановление git-репо после синего экрана Windows?

Я только что получил синий экран, у меня есть вся моя работа прошлой недели или около того в тайнике, но теперь после того события это исчезло... хорошо, я могу видеть .git папка в проводнике но делаю git status or fsck он говорит, что это не git-репо... вот небольшая игра на powershell

PS C:\Users\tyoc\Documentos\wtf> git status fatal: Not a git repository (or any of the parent directories): .git PS C:\Users\tyoc\Documentos\wtf> cd .git PS C:\Users\tyoc\Documentos\wtf\.git> git status fatal: Not a git repository (or any of the parent directories): .git PS C:\Users\tyoc\Documentos\wtf\.git> cd .. PS C:\Users\tyoc\Documentos\wtf> git init Reinitialized existing Git repository in C:/Users/tyoc/Documentos/wtf/.git/ PS C:\Users\tyoc\Documentos\wtf> git status fatal: Not a git repository (or any of the parent directories): .git PS C:\Users\tyoc\Documentos\wtf> git fsck --no-reflog fatal: Not a git repository (or any of the parent directories): .git PS C:\Users\tyoc\Documentos\wtf> git stash fatal: Not a git repository (or any of the parent directories): .git

Было бы неплохо вернуть тайник, потому что, к счастью, репо имеет центральное хранилище, так что все в порядке... но моя работа не так, как если бы я ничего не сделал в течение недели...:S,


Я добавляю это для уточнения:

Состояние репо до появления синего экрана состояло в том, что моя работа была на тайнике (у меня как 7 старых тайников, и эта последняя была моей работой на неделе), потому что мой клиент попросил меня что-то изменить (поэтому я делаю тайник то, над чем я работал) сделал изменения и нажал... за несколько секунд до того, как я восстановил тайник, я получил синий экран, затем после перезагрузки я не могу выполнить команду git, даже если там находится.git dir... (Я не знаю, содержит ли он что-то или это только структура).

Итак, состояние файлов было чистой рабочей копией (потому что изменения запрошены в данный момент), и моя настоящая реальная работа была /IS на тайнике...

И я использовал исходное дерево-источник в качестве внешнего интерфейса... не знаю, виновата ли в этом исходное дерево или синий экран в конце дня... но дело в том, что я потерял свою работу в тайнике...

2 ответа

Решение

Сначала я сделал резервную копию моего git-репозитория, а затем клонировал репозиторий как предложенный @ эквивалент8, но не заменил его все, я использовал только эти файлы внутри .git:

  • конфиг
  • FETCH_HEAD
  • ГОЛОВА
  • индекс
  • уплотненный рефов
  • sourcetreeconfig

Это позволило исходному дереву иметь возможность открывать и работать с git-статусом (т.е. это снова было git-репо).

Затем с /questions/27982535/kak-vosstanovit-sbroshennyij-tajnik-v-git/27982543#27982543 я немного изменить поиск, как это

git fsck --no-reflog | select-string 'dangling commit' | foreach { $bits = $_ -split ' '; echo $bits[2]; git show $bits[2]}

Так, чтобы я мог видеть каждый diff и проверенный коммит коммитом, если это был кандидат, я скопировал хеш, который выше в первых строках, и перешел к следующему нажатию q,

Затем для каждого кандидата я делаю

git diff 52abca5cba3ff37b4954fd2c2e12c867dceb9481 --color=never > 52abca.patch git diff 48f7110fa9d507226ce31593a0fc957e465d6c91 --color=never > 48f711.patch

ТАК, что я не потерял их снова и проверил кандидатов, моя работа все еще была там!!! (Я думаю)

Но я не могу применить их, чтобы проверить каждый, я получил error: unrecognized input каждый раз, когда я делаю git apply 48f711.patchДумаю, мне нужно будет скопировать, вставить / удалить каждый файл вручную???

Синий экран, за которым следовал мой git-репозиторий, очевидно, испорченный, только что случился на моем конце. Я заметил, что файл.git/HEAD был пуст. Я исправил проблему, добавив следующее содержимое в.git/HEAD:

ref: refs/heads/master
Другие вопросы по тегам