Обзор и дисплейные файлы в мерзавце repo без клонирования

Выполните это от ответвления, где Вы хотите, чтобы файл закончился:

git checkout otherbranch myfile.txt

Общие формулы:

git checkout <commit_hash> <relative_path_to_file_or_dir>
git checkout <remote_name>/<branch_name> <file_or_dir>

Некоторые примечания (из комментариев):

  • Используя хеш фиксации можно вытянуть файлы от любой фиксации
  • , Это работает на файлы и каталоги
  • перезаписи, Подстановочные знаки файла myfile.txt и mydir
  • не работают, но относительные пути делают
  • , Разнообразные пути могут быть определены

альтернатива:

git show commit_id:path/to/file > path/to/file
104
задан Christian Alis 24 July 2009 в 15:23
поделиться

2 ответа

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

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

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

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

71
ответ дан 24 November 2019 в 04:12
поделиться

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

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

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

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

  • Вы можете перечислить все ссылки на удаленном компьютере с помощью " git ls-remote ".
  • Вы можете получить снимок (части) репозитория (если удаленный сервер включил его) с помощью

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

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

    • Вы можете перечислить все ссылки на удаленном компьютере с помощью " git ls-remote ".
    • Вы можете получить снимок (части) репозитория (если удаленный сервер включил его) с помощью

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

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

      • Вы можете перечислить все ссылки на удаленном компьютере с помощью " git ls-remote ".
      • Вы можете получить снимок (части) репозитория (если удаленный сервер включил его) с помощью

        • Вы можете перечислить все ссылки на удаленном компьютере с помощью " git ls-remote ".
        • Вы можете получить снимок (части) репозитория (если удаленный сервер включил его) с помощью

          • Вы можете перечислить все ссылки на удаленном компьютере с помощью " git ls-remote ".
          • Вы можете получить снимок (части) репозитория (если удаленный сервер включил его) с помощью
            " архив git --remote = HEAD".
          • Вы можете клонировать только несколько последних коммитов (так называемый «мелкий клон») с помощью
            " git clone --depth = 1 ".
          • Если сервер предоставляет git-интерфейс для репозитория, вы можете использовать его для просмотра.
21
ответ дан 24 November 2019 в 04:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: