2013-05-28 4 views
19

Я удалил свою ветку по ошибке, как это:Восстановление удаленных филиала в Git

git branch -D demo 

Но я хочу, чтобы восстановить его ... Я получаю это после того, как git reflog

541b2f5 [email protected]{23}: checkout: moving from demo to master 
06fa6d5 [email protected]{24}: commit (merge): remove ajax call for deleting variables and transfomers 
b84b60a [email protected]{25}: checkout: moving from demo1 to demo 

Я хочу создать ветку с ша 06fa6d5 ... поэтому я попытался это:

git checkout -b demo 06fa6d5 

git checkout -b demo [email protected]{24} 

Но я не получил код от ...

+1

Ваши команды правильные и должны работать. В вашем вопросе нет деталей. – Chronial

+0

Похоже, это было разрешено. Мне очень понравился этот ответ для этой ситуации: http://stackoverflow.com/questions/3640764/can-i-recover-branch-after-its-deletion-in-git – VisWebsoft

ответ

36

Создайте список всех оборванных или недостижимых коммитов.

git fsck --full --no-reflogs --unreachable --lost-found 

Распечатать список сообщений фиксации для всех коммитов в потерянных и найденных.

ls -1 .git/lost-found/commit/ | xargs -n 1 git log -n 1 --pretty=oneline 

Найдите недостающую фиксацию в процессе ручного осмотра (т. Е. Чтения). Создайте новую ветку с отсутствующим фиксатором в качестве ветви головки.

git checkout -b branch-name SHA 
+4

Это было потрясающе. Я сделал это на окнах, используя mysisgit. пришлось немного изменить процесс, потому что потерянный и найденный каталог не был в каком-то разумном месте. Я взял вывод 'git fsck ...' и проверил SHA для каждого 'commmit' (не blob или tree), выполнив' git log SHA' –

+6

. Я также должен был его адаптировать: 'git fsck - -full --no-reflogs - недоступен --lost-found | grep commit | cut -d \ -f3 | xargs -n 1 git log -n 1 --pretty = oneline> .git/lost-found.txt' – Philippe

+4

Команда Филиппа oneline работала для меня в git bash для окон. Мне просто нужно было добавить дополнительное пространство после -d \ in «cut -d \ -f3» (не могу показать его в комментариях, поскольку форматирование удаляет повторяющиеся пробелы) – BenL

1

Получив потенциал sha1 для последнего конца ветки demo, используйте gitk sha1, чтобы на самом деле просмотреть историю фиксации, чтобы проверить, что у вас есть правильный.

Смежные вопросы