Фиксация истории в удаленном хранилище


206

Я пытаюсь получить доступ к истории коммитов ветки в удаленном репозитории. Я посмотрел на документ, но не смог найти какой-либо существенной информации о том, как получить доступ к истории комитетов удаленного репо с помощью моего локального клиента git.

Ответы:


252
git log remotename/branchname

Будет отображать журнал данной удаленной ветви в этом хранилище, но только те журналы, которые вы «загрузили» из их хранилища в вашу личную «копию» удаленного хранилища.

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

Возможно, еще одна полезная команда может быть:

git log HEAD..remote/branch

который покажет вам коммиты, которые находятся в удаленной ветке, но не в вашей текущей ветке ( HEAD).


8
«Вы не можете подключиться напрямую к серверу, чтобы проверить там журнал» - это была проблема, с которой я столкнулся
Брайан Дж

1
Я получаю только локальные изменения ... обратите внимание на удаленные, даже делаю выборку раньше.
Loenix

6
Когда git fetchвы делаете, вам нужно использовать, --allчтобы получить с пульта.
ocodo

25
Это очень плохо, поэтому мне нужно клонировать объекты объемом 2 ГБ, чтобы просто просмотреть журналы фиксации?
TWiStErRob

2
Здравствуйте, @TWiStErRob. Вы можете уменьшить боль, управляя объемом данных , извлекаемых с помощью мелкого клона (см. --Depth в git-scm.com/docs/git-clone ), а затем управлять выборками с помощью (см. «Мелкие» в git-scm). .com / docs / git-fetch ).
Qneill

66

NB. «origin» ниже используется для представления восходящего потока клонированного репозитория, замените «origin» описательным именем для удаленного репозитория. «Удаленная ссылка» может использовать тот же формат, что и в команде клонирования.

git remote add origin <remote reference>
git fetch
git log origin/master

2
@ user1795998 URL Git удаленного репозитория, напримерgit://git.somedomain.tld/some/repo
gertvdijk

1
Вам не нужно указывать <refspec>при извлечении (или использовании fetch --all), если вы не отслеживаете ни одну ветку на пульте?
gertvdijk

1
Что вы имеете в виду под «продавцом проекта / diag»? Это папка внутри хранилища? Еще одна ветка?
LopSae

1
Репозиторий может иметь несколько веток, но «проект» не является термином, связанным с git, оттуда возникает путаница с тем, что означает «проект» в данном случае. И все же, что это будет иметь отношение к вопросу?
LopSae

1
Я не верю, что это возможно сделать в GIT. Вы должны клонировать этот удаленный репозиторий, прежде чем вы сможете запустить git log.
user959690

12

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

Итак, если вы клонируете репо ...

git clone git@gitserver:folder/repo.git

Это будет по умолчанию origin/master.

Вы можете добавить удаленный доступ к этому репо, кроме originдавайте добавим production. Из локальной папки клонов:

git remote add production git@production-server:folder/repo.git

Если мы когда-нибудь захотим увидеть журнал, productionнам нужно сделать:

git fetch --all 

Это выборка из ВСЕХ пультов (выборка по умолчанию без --allвыборки только из origin)

После загрузки мы можем посмотреть журнал на productionудаленном компьютере, вам также нужно будет указать ветку.

git log production/master

Все параметры будут работать так же, как и при входе в локальные филиалы.


12

Быстрый способ сделать это - клонировать, используя --bareключевое слово, а затем проверить журнал:

git clone --bare git@giturl tmpdir
cd tmpdir
git log branch

11

Я не верю, что это возможно. Я считаю, что вы должны клонировать это удаленное репо локально и выполнить git fetchего, прежде чем вы сможете выполнить git logпротив него.


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

2
Если вы измените этот ответ на «Это невозможно», то это лучший ответ. Нет доступа к истории коммитов удаленного репо с помощью удаленного клиента git.
до


2

Я не уверен, когда была добавлена ​​фильтрация, но это способ исключить двоичные объекты, если вы хотите только извлечь историю / ref-журналы:

git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log

Это идеально . Учитывая другие ответы, было бы замечательно, если бы это было в состоянии выделиться рядом с предоставленным ответом.
Эрик Казино

0

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

(1) Если вы используете git через ssh - просто войдите на удаленный сервер, используя свои логин и пароль git - и chdir в удаленную папку, где находится ваш репозиторий, - и запустите команду «git log» внутри вашего репозитория на удаленном сервере.

(2) Если вы используете git по стандартному протоколу входа в систему Unix, просто подключитесь к удаленному серверу и сделайте там журнал git.

Надеюсь это поможет.


13
Перефразируя: «вы не можете получить журнал удаленного сервера, вы должны войти в систему и получить журнал, используя локальный клиент git»
qneill

Просто удалите этот ответ, он не отвечает на вопрос, и не то, что большинство пользователей git не имеют доступа к серверной оболочке
nhed

0

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

git_log_remote() {
  branch=${1:-master}
  remote=${2:-staging}

  git checkout $remote/$branch
  git fetch
  git log
  git checkout -
}

Примеры:

 $ git_log_remote
 $ git_log_remote development origin
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.