Как использовать 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, поэтому эти два других коммита (выбранных произвольно из журнала) имеют общую родословную для этого конкретного тега.