Как использовать git merge-base на удаленном компьютере?

Как можно использовать merge-base с Git в удаленном хранилище без проверки? С помощью ls-remote отлично работает, например, для определения таких веток:

git ls-remote --heads $REPO_URL/$REPO_NAME

Документация не содержит никакой подсказки, используется ли merge-base с ls-remote возможно. Может быть, это также возможно, использовать альтернативы merge-base найти общего предка для веток / коммитов.

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

1 ответ

Решение

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

Там нет необходимости проверять коммиты, хотя. Просто используйте git fetch перенести любые недостающие объекты, и тогда у вас будет полная история хранилища. Будущее git fetch будет продолжать приносить только недостающие объекты, которые будут новыми объектами, которые вам все равно понадобятся для поиска предметов.

Я не знаю, что вы пытаетесь сделать с git merge-base но для всех, кроме нового, требуются только идентификаторы коммитов --fork-point операция, где он использует ваш локальный reflog и, следовательно, требует локального ссылочного имени. Например:

$ git merge-base 9b1c2a3a8e625ea7f56e9ba3d3c0e31938faa738 \
> bba6acb335e296ed692b4aea224b50fd098f693c
ebc5da3208824e25a89672a3b91bd13629b215fe

Это говорит мне, что база слияния 9b1c2a... а также bba6acb... является ebc5da3..., (Все это идентификаторы коммитов в репозитории, содержащем исходный код для git.) И:

$ git branch -a --contains ebc5da3208824e25a89672a3b91bd13629b215fe
* master
  remotes/origin/maint
  remotes/origin/master
  remotes/origin/next
  remotes/origin/pu

говорит нам, что база слияния содержится в четырех удаленных ветвях: maint, master, next, а также puплюс местное отделение master (который синхронизирован с origin/master тем не мение). Более интересно:

$ git describe ebc5da3208824e25a89672a3b91bd13629b215fe
v2.0.2

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

Другие вопросы по тегам