- привести текущие файлы в интересующее нас состояние (в данном случае - восстановить 1.txt из ревизии 4629fbed)
$ git checkout 4629fbedf7d57 1.txt - записать текущее дерево в базу (выведет хеш записанного дерева)
$ git write-tree
82a6654d94d0425c747f1926279a9487bdc95c6a - записать коммит с деревом, записанным в предыдущей ревизии, и парентами: текущая ревизия и ревизия, где файл еще существовал
$ echo "merge" | git commit-tree 82a6654d -p 0301aba7 -p 4629fbed
a75e4109b929b7b0f53b2bc0a8284fcf8569a5e - перейти на новый коммит
$ git reset a75e41
понедельник, 21 ноября 2011 г.
Git. Восстановление удаленных в предыдущих ревизиях файлов или обход Already up-to-date при мерже..
Иногда надо восстановить потертые несколько ревизий назад файлы, сохранив их историю.
Попытка мержить с тем, что находится ниже по дереву ревизий приводит к ошибке Already up-to-date.
Например.
Выполним следующие команды:
Вывод последней команды будет такой (у вас будет отличаться хешами ревизий):
Итак. Допустим, мы вспомнили, что в ревизии 91185e8 зря удалили файл 1.txt и надо его восстановить. Причем, сохранив историю изменений.
Если мы попробуем мерж с ревизией 4629fbed(где файл еще существовал), нам скажут, что уже все смержено:
Выход в использовании более низкоуровневых команд гита. Алгоритм следующий:
Подписаться на:
Комментарии к сообщению (Atom)
приветствую...
ОтветитьУдалитьа как с Вами связаться можно? спасибо
Спасибо за статью. Интересно и качественно описали всё.
ОтветитьУдалитьИнтересно SEO и маркетинг - mr-nelus.com