Показать журналы git для диапазона коммитов на удаленном сервере? - PullRequest
8 голосов
/ 11 мая 2011

Я ищу способ запросить у git-сервера его логи для заданного диапазона коммитов.Будучи пользователем SVN, я ошибаюсь, поэтому надеюсь, что специалисты GIT могут помочь.Я ищу что-то похожее на:

svn log -r 5:20 --xml svn.myserver.com

, но для сервера git.Другими словами, покажите мне журналы для 5-го коммита до 20-го коммита.спасибо за любую помощь.

Ответы [ 2 ]

19 голосов
/ 11 мая 2011

Во-первых, поскольку в Git нет простого номера ревизии, вы должны указать ревизию, как указано в команде rev-parse .

Но единственной командой, которая напрямую запрашивает удаленное репо (без клонирования или извлечения данных), является git ls-remote и:

  • будет отображаться только SHA1, а не сообщение журнала.
  • работает с шаблонами ссылок (голова, теги, ветви, ...), а не с оборотами.

Поскольку в журнале могут отображаться diffstats и full diff, вы не можете запрашивать журналы, по крайней мере, не извлекая пульт в локальном репо.

6 голосов
/ 11 мая 2011

Я думаю, вы пытаетесь перенести некоторые предположения из Subversion, которые не действительны для git. Git - это децентрализованная система контроля версий, поэтому все команды запускаются против вашего локального клона хранилища, а не против удаленного сервера. Также в git нет единой линейной истории коммитов, поэтому вам нужно указать идентификаторы коммитов SHA-1; Вы не можете просто использовать номера ревизий.

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

Если вы еще не клонировали удаленный репозиторий, вам нужно будет запустить git clone REMOTE_URL. В качестве альтернативы, если вы хотите использовать дополнительный удаленный сервер, вы можете запустить git remote add ALIAS OTHER_REMOTE_URL в существующем хранилище.

Затем вам нужно будет извлечь коммиты с помощью git fetch origin (или git fetch ALIAS, если вы добавили дополнительный удаленный сервер).

Как только вы это сделаете, вы можете перечислить коммиты (по ветвям в удаленном репозитории) с помощью git log origin/master~5..origin/master (например, показать последние пять коммитов). Или вы можете запустить git log master..origin/master, чтобы показать новые удаленные коммиты, которые еще не были объединены локально. (Есть много других способов указать диапазоны фиксации; для получения дополнительной информации см. документацию или откройте другой вопрос.)


  1. Некоторые команды, такие как git ls-remote, выполняются на удаленном сервере, но большинство не выполняется.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...