Подтвердить что ты не робот

Git эквивалент `svn cat` с удаленным репозиторием

Я ищу эквивалент svn cat в git.

Да, я знаю, что здесь был задан аналогичный вопрос. Ответ заключается в использовании git show rev:path.

Однако svn cat может использоваться для удаленного репозитория. То есть я могу сделать svn cat [email protected] и получить файл из указанной ревизии удаленного репозитория, не получая весь репозиторий. Я понимаю, что git show применяется только к локальному репозиторию.

Обходной путь, который я нашел, - использовать интерфейс gitweb, чтобы получить blob.

4b9b3361

Ответ 1

Если ваша мотивация заключается в том, чтобы свести к минимуму объем данных, загруженных и/или сохраненных на вашем локальном диске, вы можете попробовать следующие команды.

git clone --depth=1 --bare REPO
cd REPO.git
git show HEAD:PATH/TO/FILE

--depth=1 означает, что вы загружаете только самую последнюю версию, а не историю. --bare означает, что вы загрузите удаленный репозиторий, но фактически не создадите какое-либо рабочее дерево, экономя место на локальном диске.

Обратите внимание, что если вас интересует версия файла, отличная от последней, вышеуказанные команды не будут работать, так как они не загружают историю.

Ответ 2

git fetch
git show remotes/origin/master:<filename>

Очевидно, что ваша удаленная ветвь может не находиться в remotes/origin/master.

Ответ 3

Вот hack, который вы можете использовать с последними версиями Git, чтобы получить один файл из удаленного репо (к которому у вас есть доступ Git) без клонирования репо:

git archive [email protected]:myrepo master path/to/file1 | tar -xOf - > file1

Вышеприведенный файл получает от master. Измените ваши потребности.

Ответ 4

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

Github имеет отличную поддержку для просмотра файлов в Интернете, вы можете интегрировать это с завитком, если вам нравится оставаться в командной строке. Для других репозиториев могут быть не такие функции.