Список пультов для репозитория Git?

542

У меня есть хранилище Git. Этот репозиторий имеет несколько удаленных репозиториев (я думаю). Как я могу получить список удаленных репозиториев, которые принадлежат указанному репозиторию?

Как git list --remotesили что-то подобное?

priestc
источник

Ответы:

750

Вы можете получить список любых настроенных удаленных URL-адресов с помощью команды git remote -v.

Это даст вам что-то вроде следующего:

base    /home/***/htdocs/base (fetch)
base    /home/***/htdocs/base (push)
origin  git@bitbucket.org:*** (fetch)
origin  git@bitbucket.org:*** (push)
Мэтью Шарли
источник
18
git remote -vпотому что -v для многословия. git remoteдает простой список пультов (база, источник в этом случае). Опция -v включает URL для операций извлечения и отправки каждого пульта.
dhj
2
Я должен согласиться с @AlexMills, если это git branch --list, это должен быть git remote --list
jimmyb
1
-vдля "многословный" на самом деле является более распространенным вариантом. Это также поддерживается git branch. Основное различие заключается в коротких и длинных опциях (по существу, одинарный или двойной тире). Тем не менее, поддержка --list с помощью remoteподкоманды будет иметь смысл. Если вы действительно этого хотите, я бы сказал, отправить запрос на функцию.
Рэндалл
4
Это требует, чтобы один уже имел клона. При попытке выяснить, с чего начать клонирование, нужно что-то еще ...
Михаил Т.
60

Если вам нужны только имена удаленных репозиториев (а не каких-либо других данных), достаточно простого git remote.

$ git remote
iqandreas
octopress
origin
IQAndreas
источник
32

FWIW, у меня был точно такой же вопрос, но я не мог найти ответ здесь. Это, вероятно, не переносимо, но по крайней мере для gitolite, я могу запустить следующее, чтобы получить то, что я хочу:

$ ssh git@git.xxx.com info
hello akim, this is gitolite 2.3-1 (Debian) running on git 1.7.10.4
the gitolite config gives you the following access:
     R   W     android
     R   W     bistro
     R   W     checkpn
...
аким
источник
24

Ответы пока говорят вам, как найти существующие ветви:

git branch -r

Или репозитории для того же проекта [см. Примечание ниже] :

git remote -v

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

Чтобы узнать эту информацию, я использую SSH или PuTTY, чтобы войти на хост и lsнайти каталоги, содержащие другие репозитории. Например, если я клонировал репозиторий, набрав:

git clone ssh://git.mycompany.com/git/ABCProject

и чтобы узнать, что еще доступно, я захожу на git.mycompany.com через SSH или PuTTY и набираю:

ls /git

при условии, lsговорит:

 ABCProject DEFProject

Я могу использовать команду

 git clone ssh://git.mycompany.com/git/DEFProject

получить доступ к другому проекту.

ПРИМЕЧАНИЕ. Обычно git remoteпросто говорит мне о originрепозитории, из которого я клонировал проект. git remoteбыло бы удобно, если бы вы сотрудничали с двумя или более людьми, работающими над одним и тем же проектом, и обращались к репозиториям друг друга напрямую, а не передавали все через источник.

Дейл Уилсон
источник
2
Это лучший ответ, потому что в нем говорится о хранилищах, а не о ветвях, и объясняется, как
Эдвард Росс,
16

Простой способ увидеть удаленные ветви:

git branch -r

Чтобы увидеть местные филиалы:

git branch -l
Энди Зейтц
источник
15
Это для удаленных филиалов; пользователь запросил удаленные репо .
Оуэн Блэкер
4
git ls-remoteдолжен показать вам все пульты, доступные для загрузки с вышестоящего сервера ( git-scm.com/docs/git-ls-remote ). Я полагаю, что все ответы на этой странице говорят только о том, как составить список удаленных и отслеживающих веток, которые вы уже получили, то есть Catch-22. Вы не можете получить пульт, пока не узнаете, как обращаться к нему на вышестоящем сервере.
Reb.Cabin
0

Ни один из этих методов не работает так, как просит спрашивающий, и в котором я часто нуждался. например:

$ git remote
fatal: Not a git repository (or any of the parent directories): .git
$ git remote user@bserver
fatal: Not a git repository (or any of the parent directories): .git
$ git remote user@server:/home/user
fatal: Not a git repository (or any of the parent directories): .git
$ git ls-remote
fatal: No remote configured to list refs from.
$ git ls-remote user@server:/home/user
fatal: '/home/user' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

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

Большинство ответов предполагают, что вы запрашиваете из рабочего набора git. Спрашивающий предполагает, что вы не.

В качестве практического примера предположим, что на сервере был репозиторий foo.git. Кто-то в своей мудрости решает, что нужно изменить его на foo2.git. Было бы неплохо сделать список каталогов git на сервере. И да, я вижу проблемы для мерзавца. Хотя все равно было бы неплохо.

Дейл Амон
источник
Я полагаю, вам следует снова клонировать удаленное хранилище и начать все сначала.
Ферди