Восстановление потерянных коммитов в git - PullRequest
1 голос
/ 13 февраля 2012

У меня есть локальное хранилище, назовем это A.

В A У меня есть много LOST_FOUND, которые я хочу восстановить.Каков наилучший (и наименее опасный) способ восстановления указанных коммитов?

(Я не могу точно сказать, почему они потерялись, я, честно говоря, думал, что делал простой коммит, иди домой длядень "-инда операция, но, видимо, она стала чем-то другим.

РЕДАКТИРОВАТЬ: Выполнение git branch foundit LOST_FOUND_N приводит к

error: Object #SHA1 is a blob, not a commit
fatal: Not a valid branch point: `LOST_FOUND_N`.

(где #SHA1 являетсяSHA1, а N - это число LOST_FOUND)

РЕДАКТИРОВАТЬ 2: Выполнение git show в файлах LOST_FOUND_ показывает, что они в основном отображаютсяк файлам, которые я потерял (но не все они, кажется, принадлежат одному и тому же коммиту (насколько я могу судить, я не могу точно вспомнить, что я коммитил каждый раз) или даже к одной и той же ветке).

Ответы [ 2 ]

4 голосов
/ 08 апреля 2012

В моем .bashrc есть следующий псевдоним:

alias gitkall='git fsck --lost-found | awk "{ print \$3 ; }" | xargs gitk --all'

Создает команду gitkall, которая показывает все ревизии в хранилище, включая те, которые остались от правок истории и т. Д.

В графическом интерфейсе пользователя gitk легко и просто помечать интересные потерянные ревизии, создавать новые ветви и т. Д.

0 голосов
/ 13 февраля 2012

Я просто продолжу и сам отвечу на это:

Обратите внимание, что этот ответ является специфическим для этого вопроса, а не универсальным решением по магии:

  1. Проверкафайл с
    git show FILE
  2. Когда вы узнаете файл, передайте его так:
    git show FILE > FILENAME

Обратите внимание, что это даст вам только содержимое файлов, которые вы найдете, а не структура каталога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...