Этот сценарий возникает когда вы - или силы больше, чем вы, - искал файл в своем локальном репо, и вы просто хотите восстановить новую копию последней версии из репо. Просто удалив файл с/bin/rm (не git rm) или переименовав/скрыв его, а затем выдав git pull
не будет работать: git замечает отсутствие файла и предполагает, что вы, вероятно, хотите, чтобы он ушел из репо (git diff
отобразит все строки, удаленные из пропавшего файла).
git pull
не восстанавливать недостающие файлы локально всегда расстраивало меня о мерзавца, возможно, так как я находился под влиянием других систем контроля версий (например, svn update который я считаю будет восстановить файлы, которые были локально скрыты).
git reset --hard HEAD
- альтернативный способ восстановления интересующего файла, поскольку он отменяет любые незафиксированные изменения, которые у вас есть. Однако, как отмечено here, сбрасывание git является потенциально опасной командой, если у вас есть какие-либо другие незафиксированные изменения, которые вас волнуют.
Стратегия git fetch ... git checkout
, отмеченная выше @chrismillah, является хорошим хирургическим способом восстановления файла, о котором идет речь.
Возможный дубликат [Можно ли вытащить только один файл в Git?] (Http://stackoverflow.com/questions/16230838/is-it-possible-to-pull-just-one-file-in- git) –
Возможный дубликат [Как проверить только один файл из репозитория git?] (http://stackoverflow.com/questions/2466735/how-to-checkout-only-one-file-from-git-repository) –