Доброго дня!
Есть директория .git, лог нормально просматривается, но отсутствуют все файлы.
При выполнении git checkout все файлы помечаются удалёнными.
Вопрос - как воможно восстановить все файлы если на руках только директория .git?
Спасибо.
Git: восстановление файлов из .git
Модератор: Модераторы разделов
Re: Git: восстановление файлов из .git
Посмотрите в каком коммите всё удалилось
и вернитесь на предыдущий.
Код: Выделить всё
git log --diff-filter=D --summary
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Re: Git: восстановление файлов из .git
По видимому я не совсем чётко описал, итак...
Собственно хочется восстановить все файлы.
Код: Выделить всё
$ ls -aF
./ ../ .git/
$ git log --pretty=format:"%h%x09%s"
51bea5d Вынос вывода сообщений о установке параметров в отдельную функцию
d87efc0 Полуавтоматические конфигурирование драйвера OV2715
.............
$ git checkout
D .gitignore
D AX88179/.gitignore
D AX88179/Makefile
..........
Собственно хочется восстановить все файлы.
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Git: восстановление файлов из .git
"git reset --hard" синхронизирует рабочий каталог и индекс с репозиторием (содержимым .git), удалив всё ненужное из рабочего каталога, если такое есть. Если же подобное состояние не устраивает, то вывод команды Следопыта поможет найти коммит, удаливший все файлы, после чего можно сделать "git revert ...".
Re: Git: восстановление файлов из .git
Вопрос не в том как найти коммит в котором файл был удалён и не в том как откатиться.
У вас есть только директория .git из рабочей копии - необходимо восстановить все файлы из неё.
git checkout, на мой взгляд, должен был бы это сделать, но по факту это не работает.
У вас есть только директория .git из рабочей копии - необходимо восстановить все файлы из неё.
git checkout, на мой взгляд, должен был бы это сделать, но по факту это не работает.
Re: Git: восстановление файлов из .git
Код: Выделить всё
git ls-files -d | xargs git checkout --
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Re: Git: восстановление файлов из .git
Я бы хотел немного дополнить (ну, не то, чтобы дополнить, но так..). У вас не работал вот такой checkout:
Код: Выделить всё
git checkout BRANCH
То, что предложил Следопыт, это "другой" checkout:
Код: Выделить всё
git checkout -- path
Те, используя последнюю форму, просто восстановить все файлы с какого коммита, можно и так
Код: Выделить всё
git checkout -- '*'
И, как я понимаю, в вашем случае, когда вы делаете checkout всех файлов с HEAD, это то же самое, что и предложенный serzh-z-ем `reset --hard`.
Upd. Да, и еще. Видимо, `checkout BRANCH` не работал у вас потому, что пустой working tree, отличался от HEAD. Это значит, что checkout без опции '-f' его обновляеть не будет. Собственно, вот
Код: Выделить всё
GIT-CHECKOUT(1)
...
-f, --force
When switching branches, proceed even if the index or the working tree
differs from HEAD. This is used to throw away local changes.
Ну и тут объяснение stackoverflow.com/whats-the-difference-between-git-reset-and-git-checkout.