Git - видалено деякі файли локально, як їх отримати з віддаленого сховища


109

Я видалив деякі файли на своєму ПК, як їх завантажити знову?

Потяг каже: "Уже в курсі".


1
Вам не доведеться "завантажувати їх знову", оскільки вся історія сховищ існує локально, коли ви використовуєте Git.
cdhowie

ти знаєш, як отримати їх у місцевих?
Чарлі Паркер

Відповіді:


162

Оскільки git - це розподілений VCS, ваш локальний сховище містить усю інформацію. Не потрібно завантажувати; вам просто потрібно витягнути потрібний вміст з репо в руці.

Якщо ви не здійснили видалення, просто перевірте файли з вашої поточної комісії:

git checkout HEAD <path>

Якщо ви здійснили видалення, вам потрібно перевірити файли з коміту, який має їх. Імовірно, це буде попереднє зобов'язання:

git checkout HEAD^ <path>

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


2
так само як побічний коментар, це також працює для повного каталогу, який не є спеціальним або специфічним для одного файлу (він працював, коли я намагався його принаймні). Thnx btw.
Чарлі Паркер

5
Примітка <path>: обов'язкове, навіть якщо просто вказано .крапку для поточного режиму. Але "гілка" ( HEADу наведеному вище прикладі) необов'язкова. Як і у багатьох команд Git, ні вихід, ні допомога не корисні.
MarkHu

39

git checkout filename

git reset --hard може також зробити трюк


9
попередження Тхо при використанні git reset --hardметоду, який поверне все дерево назад до місця, де ви поставите HEAD / HEAD ^ / HEAD ~ n, і це зробить без шкоди і, можливо, втратить багато зобов'язань ...
g19fanatic

Назва файлу git checkout - відповідь для мене :)
Руб

Назва файлу git checkout створює лише порожній файл
mrek

поміщений у потрібну папку і справді git checkount .працював як шарм!
hzitoun

21

Якщо ви видалили декілька файлів локально, але не були скоєні, ви можете примусити оформляти замовлення

$ git checkout -f HEAD

Як ми бачимо з результату "Вже сучасний", людина, яка задає це питання, останнім часом нічого не робила. Ви можете, можливо, вказати, що замовлення на git -f HEAD небезпечно? Оскільки це може скасувати локальні зміни, які не були скоєні (відновлення попередніх файлів було позитивним результатом, втрата змін у відредагованих файлах - негативна).
Ліонель Требушон

15

Якщо ви видалили декілька файлів локально і не ввели змін, перейдіть до місцевого шляху сховища, відкрийте оболонку git та введіть.

$ git checkout HEAD .

Усі видалені файли до останнього фіксації будуть відновлені.

Додавання "." відновить усі видалені файли в поточному сховищі до відповідних шляхів.

Для отримання більш детальної інформації огляньте документацію .


2

Потрібно перевірити попередню версію, перш ніж видалити файли. Спробуйте git checkout HEAD^перевірити останню версію.


0

Крім того, я додам зробити наступні кроки, щоб git repo було правильно пов'язано з IDE:

 $ git reset <commit #>

 $ git checkout <file/path>

Я сподіваюся, що це було корисно !!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.