Git - удалил некоторые файлы локально, как их получить из удаленного репозитория

110

Я удалил некоторые файлы на своем ПК, как мне их снова загрузить?

Pull говорит: «Уже актуально».

Дик Кольт
источник
1
Вам не нужно «загружать их снова», потому что вся история репозитория существует локально, когда вы используете Git.
cdhowie
ты знаешь, как получить их у местных?
Чарли Паркер

Ответы:

164

Поскольку git - это распределенная система контроля версий, ваш локальный репозиторий содержит всю информацию. Загрузка не требуется; вам просто нужно извлечь нужный контент из репозитория у вас под рукой.

Если вы еще не зафиксировали удаление, просто проверьте файлы из текущего коммита:

git checkout HEAD <path>

Если вы зафиксировали удаление, вам необходимо извлечь файлы из фиксации, в которой они есть. Предположительно это будет предыдущая фиксация:

git checkout HEAD^ <path>

но если он nкоммитируется назад, используйте HEAD~nили просто запускайте gitk, найдите SHA1 соответствующего коммита и вставьте его.

Каскабель
источник
2
как побочный комментарий, это также работает для всего каталога, а не для отдельного файла (по крайней мере, он работал, когда я его пробовал). Спасибо, кстати.
Чарли Паркер
5
NB, <path>это обязательно, даже если это просто .точка для текущего каталога. Но «ветка» ( HEADв приведенном выше примере) необязательна. Как и в случае со многими другими командами Git, ни вывод, ни справка бесполезны.
MarkHu
39

git checkout filename

git reset --hard тоже может помочь

Шимон Тот
источник
9
предупреждение, что при использовании git reset --hardметода, так как это вернет все дерево обратно в то место, где вы поместите HEAD / HEAD ^ / HEAD ~ n, и он сделает это без предубеждений и потенциально потеряет много
коммитов
git checkout filename был для меня ответом :)
Ruub
git checkout filename создает просто пустой файл
mrek
поместил в нужную папку и заработал git checkount .как шарм!
hzitoun 07
21

Если вы удалили несколько файлов локально, но не зафиксировали, вы можете принудительно оформить заказ

$ git checkout -f HEAD
Амит
источник
Как видно из вывода «Уже актуально», человек, задающий этот вопрос, в последнее время ничего не совершал. Может, стоит указать, что git checkout -f HEAD ОПАСНО? Поскольку это может отменить локальные изменения, которые не были зафиксированы (восстановление предыдущих файлов является положительным результатом, потеря изменений в отредактированных файлах - отрицательным).
Лайонел Требюшон
15

Если вы удалили несколько файлов локально и не зафиксировали изменения, перейдите по пути к локальному репозиторию, откройте оболочку git и введите.

$ git checkout HEAD .

Все файлы, удаленные до последней фиксации, будут восстановлены.

Добавление "." восстановит все удаленные файлы в текущем репозитории по их соответствующим путям.

Для получения более подробной информации посетите документации .

РЗСХР
источник
2

Вам необходимо проверить предыдущую версию, прежде чем удалять файлы. Попробуй git checkout HEAD^проверить последнюю ревизию.

Meagar
источник
0

Кроме того, я добавляю, чтобы выполнить следующие шаги, чтобы репозиторий git был правильно связан с IDE:

 $ git reset <commit #>

 $ git checkout <file/path>

Я надеюсь, что это было полезно!!

Мона Уэйд
источник