Почему git pull не возвращает каталоги, которые я удалил? - PullRequest
40 голосов
/ 16 февраля 2012

Я только что начал изучать, как использовать git сегодня, хорошо прогрессируя.

В качестве эксперимента я использовал push для загрузки двух каталогов (содержащих по два файла в каждом) и двух файлов вкорневая директория.Это работало нормально.

Затем я удалил один из двух каталогов, которые у меня есть локально (но не в git).Когда я использую git status, мне кажется, что это известно:

deleted: test/Testfile.asdeleted: test/Testile2.as

Но когда я использую git pull, чтобы вернуть мои файлы, они, похоже, не возвращаются в мою локальную папку.Я также пытался git fetch.

Единственный способ вернуть все обратно - это git clone, но это не кажется логичным, так как мне нужно удалить свой главный каталог локально, а затемснова клонируйте его обратно (или укажите новое местоположение для клонированных файлов).

Как правильно извлечь файлы и папки из github, которые были удалены локально?

Ответы [ 5 ]

56 голосов
/ 16 февраля 2012

git pull просто объединяет извлеченные коммиты в вашем рабочем каталоге и не восстанавливает удаленный каталог (но может предупредить вас о конфликтах.)

Если вы удалили папки в своем рабочем каталоге, у вас естьЧтобы сделать:

git checkout -- test

, чтобы получить его обратно.

Или вы можете сделать git reset --hard, чтобы полностью перевести ваш рабочий каталог в состояние HEAD.

14 голосов
/ 16 февраля 2012

вы хотите вернуть свой репозиторий к предыдущей рабочей версии. это работа для git-reset.

git reset --hard

обязательно прочитайте это полезное объяснение git-reset

Вы также можете проверить эти файлы, если хотите:

git checkout -- test/
3 голосов
/ 16 февраля 2012

Git Pull будет сливаться в изменениях. думайте об этом как о файле, который вы изменили. git pull не заменяет содержимое файла удаленной копией, если вы ее изменили. даже если есть конфликтующее изменение, оно просто предупреждает вас о перемотке вперед.

Если ваш репозиторий находится в состоянии, когда удаление является единственным незафиксированным изменением и вы хотите отменить его, выполните git reset head --hard

Или, если у вас есть другие изменения, которые вы хотите оставить на месте, выполните git checkout -- test

1 голос
/ 23 марта 2017

Помимо git pull и git checkout, git revert также будет полезно для возврата удаленных файлов

0 голосов
/ 31 мая 2015

git reset --hard <commit hash> означает, что HEAD будет указывать на конкретный коммит, и любые коммиты, сделанные вами после хэша коммита, будут недоступны.Причина этого в том, что вы указываете HEAD для отдельного коммита HASH.Если вы нажмете принудительно, вы потеряете все коммиты.

Примечание: будьте осторожны при использовании команды git reset --hard в git.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...