Как я могу получить содержимое файла из git index? - PullRequest
30 голосов
/ 17 февраля 2011

У меня есть файл, который уже был добавлен в мой локальный репозиторий.Я изменил его в рабочем дереве, поэтому git status показывает мне измененный файл.Я хотел бы знать, что такое содержимое файла , хранящееся в индексе, прежде чем я подготовлю файл к печати.* восстановить патч, сгенерированный git diff, и применить его к файлу в рабочем дереве

использовать git checkout-index, указать временный файл и прочитатьсодержание оттуда

Есть ли более простой способ?

Ответы [ 3 ]

54 голосов
/ 01 марта 2011

Используйте префикс : для доступа к объектам в текущем индексе (подготовлены, но еще не зафиксированы).

git show :file

Подробнее см. В руководстве gitrevisions .

8 голосов
/ 17 февраля 2011

Чтобы вывести файл из индекса, я не уверен в существующем способе написания сценариев, но вы можете использовать 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 (или все, что вы хотите), и это очень гибкий.

3 голосов
/ 17 февраля 2011

Существует три способа получения различий с помощью git

git diff graph

, чтобы увидеть разницу между файлом в рабочем каталоге и индексом, который вам просто необходим:1006 *

git diff name_of_file

Я написал об этом более подробно в другом месте

...