Ответ 1
Используйте префикс :
для доступа к объектам в текущем индексе (поэтапный, но еще не проведенный).
git show :file
Подробнее см. руководство gitrevisions.
У меня есть файл, который уже добавлен в мой локальный репозиторий. Я изменил его в рабочем дереве, поэтому git status
показывает мне файл как измененный. Я хотел бы знать, что является содержимым файла, содержащимся в индексе, прежде чем я создам файл.
Я могу представить два способа сделать это:
git diff
, и применить его к файлу в рабочем деревеgit checkout-index
, укажите на временный файл и прочитайте содержимое тамЕсть ли более простой способ?
Используйте префикс :
для доступа к объектам в текущем индексе (поэтапный, но еще не проведенный).
git show :file
Подробнее см. руководство gitrevisions.
Чтобы вырезать файл из индекса, я не уверен в существовании существующего сценария, но вы можете использовать ls-files
для запроса индекса:
$ git ls-files -s README
100644 67cfeb2016b24df1cb406c18145efd399f6a1792 0 README
$ git cat-file blob 67cfeb2016b24df1cb406c18145efd399f6a1792
# etc.
Вы можете скомпоновать команды следующим образом:
git cat-file blob $(git ls-files -s README | awk '{print $2}')
(Хотя, конечно, я изобретаю колесо здесь.)
Однако, если вы просто хотите открыть оригинал и ваши изменения в редакторе, используйте команду difftool
. Он копирует индексированную версию во временный файл для вас и открывает vimdiff
(или все, что вы хотите), и он очень гибкий.
Существует три способа получения различий с git
чтобы посмотреть, какая разница между файлом в рабочем каталоге и индексом, который вам нужен только:
git diff name_of_file
Я писал об этом более подробно в другом месте