¿Lista de controles remotos para un repositorio Git?

542

Tengo un repositorio de Git. Este repositorio tiene múltiples repositorios remotos (creo). ¿Cómo puedo obtener una lista de los repositorios remotos que pertenecen a dicho repositorio?

¿Me gusta git list --remoteso algo así?

sacerdote
fuente

Respuestas:

750

Puede obtener una lista de las URL remotas configuradas con el comando git remote -v.

Esto te dará algo como lo siguiente:

base    /home/***/htdocs/base (fetch)
base    /home/***/htdocs/base (push)
origin  [email protected]:*** (fetch)
origin  [email protected]:*** (push)
Matthew Scharley
fuente
18
git remote -vporque -v es para verbose. git remoteda una lista simple de controles remotos (base, origen en este caso). La opción -v incluye la url para las operaciones de recuperación y envío de cada control remoto.
dhj
2
Tengo que estar de acuerdo con @AlexMills, si es git branch --list, debería ser git remote --list
jimmyb
1
-vpara "detallado" es en realidad la opción más común. También es compatible con git branch. La diferencia básica es las opciones cortas frente a las largas (esencialmente un solo guión doble). Dicho esto, apoyar --list con el remotesubcomando tendría sentido. Si realmente lo desea, diría que envíe una solicitud de función.
Randall
44
Esto requiere que uno tenga un clon ya. Al intentar averiguar qué clonar, para empezar, se necesita algo más ...
Mikhail T.
60

Si solo necesita los nombres de los repositorios remotos (y no ninguno de los otros datos), un simple git remotees suficiente.

$ git remote
iqandreas
octopress
origin
IQAndreas
fuente
32

FWIW, tenía exactamente la misma pregunta, pero no pude encontrar la respuesta aquí. Probablemente no sea portátil, pero al menos para gitolite, puedo ejecutar lo siguiente para obtener lo que quiero:

$ ssh [email protected] 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
...
akim
fuente
24

Las respuestas hasta ahora le dicen cómo encontrar sucursales existentes:

git branch -r

O repositorios para el mismo proyecto [ver nota a continuación] :

git remote -v

Hay otro caso. Es posible que desee saber sobre otros repositorios de proyectos alojados en el mismo servidor.

Para descubrir esa información, uso SSH o PuTTY para iniciar sesión en el host y lsencontrar los directorios que contienen los otros repositorios. Por ejemplo, si cloné un repositorio escribiendo:

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

y quiero saber qué más hay disponible, inicio sesión en git.mycompany.com a través de SSH o PuTTY y escribo:

ls /git

asumiendo lsdice:

 ABCProject DEFProject

Puedo usar el comando

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

para acceder al otro proyecto.

NOTA: Por lo general, git remotesimplemente me informa sobre originel repositorio desde el que cloné el proyecto. git remoteSería útil si estuvieras colaborando con dos o más personas trabajando en el mismo proyecto y accediendo directamente a los repositorios de los demás en lugar de pasar todo por el origen.

Dale Wilson
fuente
2
Esta es una mejor respuesta porque habla de los repositorios, en lugar de las sucursales, y explica cómo enumerar los repositorios que no están en el repositorio actualmente retirado
Edward Ross
16

Una forma simple de ver ramas remotas es:

git branch -r

Para ver sucursales locales:

git branch -l
Andy Seitz
fuente
15
Esto es para sucursales remotas; el usuario solicitó repositorios remotos .
Owen Blacker
44
git ls-remotedebería mostrarle todos los controles remotos disponibles para buscar desde el servidor ascendente ( git-scm.com/docs/git-ls-remote ). Creo que todas las respuestas en esta página solo le dicen cómo enumerar los controles remotos y las ramas de seguimiento que ya ha obtenido, que es un Catch-22. No puede recuperar un control remoto hasta que sepa cómo referirse a él en el servidor ascendente.
Reb.Cabin
0

Ninguno de esos métodos funciona de la manera que el interlocutor está pidiendo y que a menudo también he necesitado. p.ej:

$ 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.

El objetivo de hacer esto es que no tiene ninguna información, excepto el usuario remoto y el servidor, y desea saber a qué tiene acceso.

La mayoría de las respuestas asumen que está realizando consultas desde un conjunto de trabajo de git. El interlocutor asume que no lo eres.

Como ejemplo práctico, suponga que hay un repositorio foo.git en el servidor. Alguien en su sabiduría decide que necesita cambiarlo a foo2.git. Sería realmente bueno hacer una lista de un directorio git en el servidor. Y sí, veo los problemas para git. Sin embargo, aún sería bueno tenerlo.

Dale Amon
fuente
Supongo que deberías clonar el repositorio remoto nuevamente y comenzar de nuevo.
Ferdi hace