Я хочу извлечь копию последней версии файла, хранящегося в репозитории git, и передать ее в сценарий для некоторой обработки. С svn или hg я просто использую команду "cat":
Распечатать указанные файлы в том виде, в котором они были в данной ревизии. Если ревизия не указана, используется родительский рабочий каталог или подсказка, если ревизия не извлечена.
(это из описания hg cat в документации hg)
Какая эквивалентная команда делает это с помощью git?
git
version-control
Ричард Бултон
источник
источник
Ответы:
где rev - это ревизия.
См. Http://git.or.cz/course/svn.html для сравнения команд git и svn.
источник
есть "git cat-file", который можно запустить следующим образом:
$ git cat-file blob v1.0:path/to/file
где вы можете заменить «v1.0» на нужный SHA ветки, тега или фиксации, а затем «путь / к / файлу» на относительный путь в репозитории. Вы также можете передать '-s', чтобы увидеть размер содержимого, если хотите.
может быть ближе к командам «cat», к которым вы привыкли, хотя ранее упомянутое «show» будет делать то же самое.
источник
git show
это команда, которую вы ищете. Из документации:источник
Также работайте с именами веток (например, HEAD в первом p):
источник
Используйте
git show
, как вgit show commit_sha_id:path/to/some/file.cs
.источник
Я написал сценарий оболочки git cat, который находится на github
источник
Похоже, прямой замены нет. В этой записи блога подробно описывается, как сделать эквивалент, определяя последнюю фиксацию, затем определяя хэш для файла в этой фиксации и затем выгружая его.
(запись в блоге содержит опечатки и использует указанное выше с командой
svn
)источник
Ни одно из
git show
предложений по-настоящему не удовлетворяет, потому что (как бы я ни старался) я не могу найти способ не получить ненужные метаданные из верхней части вывода. Суть кота (1) в том, чтобы показать содержимое. Это (ниже) принимает имя файла и необязательный номер. Число - это то, как вы хотите вернуться. (Коммиты, которые изменили этот файл. Коммиты, которые не изменяют целевой файл, не учитываются.)показывает содержимое filename.txt на момент последней фиксации filename.txt и содержимое 3 коммитов до этого.
источник
Для тех, кто использует bash, полезна следующая функция:
Поместите его в свой
.bashrc
файл (вы можете использовать любое имя, кромеgcat
.Пример использования:
или же
или же
источник