Показать полные файлы в том виде, в каком они существуют в индексе git - PullRequest
6 голосов
/ 27 августа 2009

Я пишу ловушку перед фиксацией и хотел бы проверить все содержимое каждого файла, который должен быть зафиксирован (в частности, проверку на задержку файлов). Я хочу проверить файл, как он будет передан, а не как он существует в моем рабочем дереве (может отличаться).

Пример ловушки перед фиксацией, который поставляется с git, показывает вам, как получить diff (чтобы вы могли проверить пробелы и тому подобное), но мне нужно получить весь файл, так как он будет зафиксирован.

Ответы [ 2 ]

10 голосов
/ 27 августа 2009

Попробуйте это:

git --work-tree=/path/to/checkout-area checkout-index path/to/file-to-checkout

Опция --work-tree указывает git использовать другую область в качестве рабочего дерева, чтобы вы не перезаписывали файл в своем настоящем рабочем дереве. Возможно, вы также захотите добавить опцию -f, чтобы при необходимости сказать ей перезаписывать, но если ваш скрипт правильно очищается после себя, в этом нет необходимости. См. Справочную страницу для checkout-index для получения дополнительной информации.

5 голосов
/ 27 августа 2009

Другое решение для одиночного 1 файла (при условии, что вы не во время конфликтного слияния или перебазировки):

$ git show :0:path/to/file

(где path/to/file относительно верхнего каталога в хранилище).

Или "git cat-file blob :0:path/to/file", который (я думаю) не будет вызывать какие-либо фильтры (расширение ключевых слов, преобразование конца строки и т. Д.).

См. Раздел о расширенном синтаксисе sha-1 в git-rev-parse manpage


1.) преимущество Ответ Джефроми заключается в том, что с помощью git checkout-index вы можете оформить более одного файла; Вы можете оформить заказ на весь каталог или даже весь проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...