В мерзавце нет ничего особенного. Если вы знаете имя файла, вы можете узнать изменение, которое удалило его, с помощью журнала:
git log -n 1 -- filename
Затем вы можете использовать этот коммит, чтобы получить файл, существовавший до удаления.
git checkout [last_revision]^ filename
Пример:
dhcp-120:/tmp/slosh 587% ls -l slosh.tac
ls: slosh.tac: No such file or directory
dhcp-120:/tmp/slosh 588% git log -n 1 -- slosh.tac
commit 8d4a1f1a94e4aa37c1cb9d329a140d08eec1b587
Author: Dustin Sallings <dustin@spy.net>
Date: Mon Dec 15 11:25:00 2008 -0800
Get rid of a .conf and replace it with .tac.
dhcp-120:/tmp/slosh 589% git checkout 8d4a1f^ slosh.tac
dhcp-120:/tmp/slosh 590% ll slosh.tac
-rw------- 1 dustin wheel 822 Dec 30 12:52 slosh.tac
Обратите внимание, что это фактически не возвращает файл обратно в контроль версий. Он просто сбрасывает файл в том виде, в котором он существовал в своем конечном состоянии, в текущее местоположение. Затем вы можете добавить его или просто осмотреть его или что-то еще с этого момента.