Почему git pull не возвращает каталоги, которые я удалил?
Я только начал изучать, как использовать git
сегодня, хорошо развиваясь.
В качестве эксперимента я использовал push
для загрузки двух каталогов (содержащих по два файла) и двух файлов в корневом каталоге. Это отлично работает.
Затем я удалил один из двух каталогов, которые я локально (но не на git). Когда я использую git status
, он, похоже, знает об этом:
deleted: test/Testfile.as
deleted: test/Testile2.as
Но когда я использую git pull
, чтобы вернуть мои файлы, они, похоже, не возвращаются в мою локальную папку. Я также пробовал git fetch
.
Единственный способ, которым я, кажется, все вернуть - git clone
, но это не кажется логичным, поскольку мне нужно локально удалить мой основной каталог, а затем снова клонировать его (или, альтернативно, указать новое местоположение для клонированные файлы).
Каким образом можно получить файлы и папки из github, которые были удалены локально?
Ответы
Ответ 1
git pull
просто объединяет извлеченные коммиты в вашем рабочем каталоге и не восстанавливает ваш удаленный каталог (но может предупредить вас о конфликтах.)
Если вы удалили папки в своем рабочем каталоге, вам нужно сделать:
git checkout -- test
чтобы вернуть его.
Или вы можете сделать git reset --hard
, чтобы полностью привести свой рабочий каталог в состояние HEAD.
Ответ 2
вы хотите вернуть свой репозиторий в предыдущую рабочую версию. это задание для git - reset.
git reset --hard
обязательно прочитайте это полезное объяснение git - reset
вы также можете проверить эти файлы, если хотите:
git checkout -- test/
Ответ 3
git pull будет сменяться. подумайте об этом, как о файле, который вы изменили. a git pull не заменяет содержимое файла копией пультов, если вы его модифицировали. даже если есть противоречивые изменения, тогда он просто предупреждает вас о быстром продвижении.
Если у вас есть репозиторий в состоянии, в котором удаление является единственным незафиксированным изменением, и вы хотите его отменить, выполните git reset head --hard
Или, если у вас есть другие изменения, которые вы хотите оставить на месте, сделайте git checkout -- test
Ответ 4
Помимо git pull
и git checkout
, git revert
также поможет восстановить удаленные файлы
Ответ 5
git reset --hard <commit hash>
означает, что HEAD будет указывать на конкретную фиксацию и любые фиксации, которые вы сделали после того, как хеш фиксации не будет доступен. Причина этого заключается в том, что вы указываете HEAD для разделения фиксации HASH. Если вы нажмете принудительно, вы потеряете все фиксации.
Примечание. Будьте внимательны при использовании команды git reset --hard
в git.