Вы можете получить содержимое из индекса в любое место, используя git show
имя-объекта , где имя-объекта - это SHA1 или :filename
(это означает, что версия изindex) или revision:filename
(это означает версию из данной ревизии).Так что либо:
git show :filename > filename.tmp
git add filename
mv filename.tmp filename
, либо
OBJECT=$(git rev-parse :filename)
git add filename
git show $OBJECT > filename
Первый сохраняет данные на диск перед изменением индекса, а второй просто запрашивает у индекса имя объекта, которое он имел, изменяет его и затемполучает объект из хранилища объектов.В то время ничто больше не относится к объекту, но оно не будет удалено, пока вы не запустите git gc
.