Я удалил все содержимое папки, и папка пуста. У меня все еще была копия в моем удаленном репо. Но когда я сделал это, git pull
он не вернул удаленные файлы, не должно ли этого делать?
Итак, я провел небольшое исследование и увидел, что вы можете вернуть файл, выполнив
git checkout <revision> -- <name of file>
Но это работает только с файлами.
Как я могу получить все файлы внутри каталога?
git
git-checkout
json2021
источник
источник
git status
подскажет, какие команды нужно запускатьОтветы:
Все, что вы можете сделать с файлом, вы можете сделать и с папкой.
Также обратите внимание на поиск и восстановление удаленного файла в репозитории Git.
Файлы удаляются из рабочего дерева, но еще не зафиксированы:
Если вы еще не индексировали (
git add
) свои изменения, вы можете вернуть содержимое каталога:Если удаление уже проиндексировано, вы должны сначала сбросить его:
Восстановить полное рабочее дерево (а не отдельную папку), но потерять все незафиксированные изменения
Когда файлы удаляются в каком-то коммите в прошлом:
Найдите последнюю фиксацию, которая повлияла на данный путь. Поскольку файла нет в фиксации HEAD, эта фиксация должна была удалить его.
Затем проверьте версию перед фиксацией, используя
^
символ каретки ( ):Восстановить полное рабочее дерево из удаленной фиксации
источник
git checkout -- path/to/folder/*
не работает Примечание: вопрос в том, как восстановить папку, а не файлHow can I retrieve all the files inside the directory
означает как каталог, так и его файлы. Но и у меня эта команда на удивление не работает. Помню, год назад это было.git checkout -- path
илиgit checkout -- 'path/*'
. В вашем примере вы удаляете то, сgit rm
чем OP, похоже, не работает. Я добавил инструкцию для такого случая. Благодарность!git checkout "<deleting_commit>^" -- <file_path>
Если вы еще не зафиксировали свои изменения, вы можете вернуть содержимое или каталог:
Если вы хотите отменить все изменения, сделайте:
источник
git checkout -- removed_directory
не работаетgit checkout -- removed_directory
работал у меня, но я создавал этот каталог раньше (checkout
одним из файлов в этом каталоге). После создания все файлы были восстановлены в папке этой командой.Вы можете восстановить файлы или папку с помощью git restore.
Здесь master ~ 1 возвращает вашу папку в ревизию "1" из вашей основной ветки.
Источник: https://git-scm.com/docs/git-restore
источник
Единственное, что у меня сработало, - это проверить репо в другой папке. Предположим, что текущее репо находится в
/home/me/current
.Я тогда сделал
Это делает отдельный клон репо в
/home/me/temp
Теперь я могу пойти
/home/me/temp
и делать все, что хочу. НапримерТеперь я могу скопировать удаленную папку с файлами обратно
И удалите временную папку
Примеры
НЕ РАБОТАЕТ
Другие примеры, такие как
деструктивны не только для удаленных файлов. Любые другие изменения также будут потеряны.
по аналогии
потеряет любые коммиты после
some-commit
источник
Начиная с git 2.24.0, есть экспериментальная новая команда git : git restore
источник
Если вы не укажете конкретный файл, вы сможете извлечь все содержимое конкретной фиксации. Например:
git checkout 264794319e9695ba843cd6
(при условии, что у хеша все ваши файлы в правильном состоянии).Причина
pull
не в восстановлении файлов в том, что git рассматривает ваши удаления как самые свежие изменения, применяя их поверх всего, что вы тянете.(Я бы порекомендовал поэкспериментировать в новой ветке.)
источник
Если вы просто хотите восстановить удаленную папку и у вас есть другие коммиты после удаления, вы также можете просто перейти к своему проекту на github.com.
На github.com перейдите к последней фиксации, в которой есть ваша папка. Вы должны увидеть сообщение о фиксации, а справа есть кнопка с надписью «Обзор файлов». Щелкнув по нему, вы перейдете ко всем файлам с этого этапа фиксации.
Оттуда вы можете клонировать код или просто загрузить его в виде zip-архива.
источник
для незавершенных удалений, это так просто:
git reset HEAD rel / путь / к / удаленному / каталогу / *
источник