Просмотр и отображение файлов в репозитории git без клонирования



есть ли способ просматривать и отображать файлы в репозитории git без его клонирования? Я могу сделать это в svn с помощью команд:




svn ls /path/to/repo
svn cat /path/to/repo/file-in-repo


Я могу предположительно использовать git show, но делать:




git show /path/to/repo
git show HEAD:/path/to/repo


результат




fatal: Not a git repository
614   7  
git

7 ответов:

команда, которую вы хотите git ls-remote что позволяет вам получить некоторую информацию об удаленных репозиториях, но вы не можете показать историю или каталоги списков или что-либо из этого уровня: по сути, это позволяет вам видеть удаленные объекты только на очень высоком уровне (например, вы можете видеть текущие заголовки и теги).

единственный реальный способ сделать то, что вы хотите (если я правильно понимаю), это использовать ssh для запуска удаленной команды и возврата результатов, например пример:

ssh me@otherhost "cd repo && git log -n 10"

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

взгляните на http://git-scm.com/book/en/Git-Internals-Transfer-Protocols для получения информации о том, как это сделать по некоторым транспортным протоколам. Обратите внимание, что это не будет работать для стандартного git через SSH.

для git over SSH обновленный серверный git должен позволять вам git-архивировать непосредственно с пульта дистанционного управления, который вы могли бы затем, например, передать в "tar t", чтобы получить список всех файлов в данной фиксации.

Git is распределенные система контроля версий, в то время как в Subversion централизованный (клиент-сервер) система управления версиями. Они работают по-разному, привыкайте к этому. Пожалуйста, прочитайте мой ответ, объясняющий последствия этой разницы мерзавец, эквивалентную svn status -u вопрос в StackOverflow.

повторяюсь немного: в централизованной системе управления версиями (например, CVS или Subversion) почти все команды обрабатываются на сервер, и включать сеть. Очень немногие команды выполняются локально. Обратите внимание, что для хорошей производительности "svn status" и "svn diff" Subversion хранит "первозданную копию" извлеченной версии на клиенте, Чтобы не включать сетевую передачу для этих общих операций (это означает, что Subversion checkout = 2 x Размер рабочего каталога по крайней мере).

в распределенной системе управления версиями (например, Git, Mercurial или Bazaar), где у вас есть локальная копия (клон) целого репозиторий,почти все команды выполняются на клиенте. Очень немногие команды требуют сетевого подключения к другому репозиторию (серверу).

количество команд, которые вы можете выполнить на сервере, ограничено.

  • вы можете перечислить все ссылки на удаленном с "git ls-remote ".
  • вы можете получить снимок (часть) репозитория (если удаленный сервер включил его) с помощью
    " git archive -- remote= HEAD".
  • можно клонировать только несколько последних коммитов (так называемый "мелкий клон") с
    "git clone --depth=1 ".
  • если сервер предоставляет git web interface в репозиторий, вы можете использовать его для просмотра.

GitHub совместим с svn, поэтому вы можете использовать svn ls

svn ls https://github.com/user/repository.git/branches/master/

BitBucket поддерживает git архив, так что вы можете скачать архив tar и список архивированных файлов. Это не очень эффективно, но работает:

git archive [email protected]:repository HEAD directory | tar -t

не точно, но наоборот.

используйте GitHub Developer API

  1. открытие этого даст вам последние коммиты.

    https://api.github.com/repos/learningequality/ka-lite/commits

    вы можете получить конкретные данные фиксации, прикрепив хэш фиксации в конце указанного выше url.

  2. все файлы ( вам нужен sha для основного дерево)

    https://api.github.com/repos/learningequality/ka-lite/git/trees/7b698a988683b161bdcd48a949b01e2b336b4c01

Я надеюсь, что это может помочь.

это, вероятно, считается грязным некоторыми, но очень практичное решение в случае репозиториев github-это просто сделать скрипт, например "git-ls":

#!/bin/sh
remote_url=${1:? " requires URL as argument"}
curl -s $remote_url | grep js-directory-link | sed "s/.* title=\"\(.*\)\".*//"

сделать его исполняемым и доступным, конечно:chmod a+x git-ls; sudo cp git-ls /usr/local/bin. Теперь, вы просто запустите его, как вы хотите:

git-ls https://github.com/mrquincle/aim-bzr
git-ls https://github.com/mrquincle/aim-bzr/tree/master/aim_modules

также знаю, что есть git instaweb утилита для локальных файлов. Иметь возможность показывать файлы и иметь такой сервер, на мой взгляд, не уничтожает ни одного из присущих децентрализованных характеристики ГИТ.

Если вы знаете удаленную ветку, которую вы хотите проверить, вы можете узнать последнюю информацию через:

git ls-tree -r <remote_branch> --name-only

Comments

    Ничего не найдено.