Liste des télécommandes pour un référentiel Git?

542

J'ai un référentiel Git. Ce référentiel a plusieurs référentiels distants (je pense). Comment puis-je obtenir une liste des référentiels distants qui appartiennent à ce référentiel?

Comme git list --remotesou quelque chose comme ça?

prêtre
la source

Réponses:

750

Vous pouvez obtenir une liste de toutes les URL distantes configurées avec la commande git remote -v.

Cela vous donnera quelque chose comme ceci:

base    /home/***/htdocs/base (fetch)
base    /home/***/htdocs/base (push)
origin  [email protected]:*** (fetch)
origin  [email protected]:*** (push)
Matthew Scharley
la source
18
git remote -vparce que -v est pour verbeux. git remotedonne une simple liste de télécommandes (base, origine dans ce cas). L'option -v inclut l'url pour les opérations de récupération et de transmission de chaque télécommande.
dhj
2
Je dois être d'accord avec @AlexMills, si c'est git branch --list, il devrait être git remote --list
jimmyb
1
-vpour "verbeux" est en fait l'option la plus courante. Il est également soutenu par git branch. La différence de base est les options courtes vs longues (simple vs double tiret, essentiellement) Cela dit, soutenir --list avec la remotesous - commande aurait du sens. Si vous le voulez vraiment, je dirais soumettre une demande de fonctionnalité.
Randall
4
Cela nécessite d'avoir un clone déjà. Lorsque vous essayez de comprendre ce qu'il faut cloner pour commencer, quelque chose d'autre est nécessaire ...
Mikhail T.
60

Si vous n'avez besoin que des noms des référentiels distants (et pas des autres données), un simple git remotesuffit.

$ git remote
iqandreas
octopress
origin
IQAndreas
la source
32

FWIW, j'avais exactement la même question, mais je n'ai pas pu trouver la réponse ici. Ce n'est probablement pas portable, mais au moins pour la gitolite, je peux exécuter ce qui suit pour obtenir ce que je veux:

$ 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
la source
24

Jusqu'à présent, les réponses vous indiquent comment trouver des succursales existantes:

git branch -r

Ou référentiels pour le même projet [voir note ci-dessous] :

git remote -v

Il y a un autre cas. Vous voudrez peut-être en savoir plus sur les autres référentiels de projets hébergés sur le même serveur.

Pour découvrir ces informations, j'utilise SSH ou PuTTY pour me connecter à l'hôte et lstrouver les répertoires contenant les autres référentiels. Par exemple, si j'ai cloné un référentiel en tapant:

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

et je veux savoir quoi d'autre est disponible, je me connecte à git.mycompany.com via SSH ou PuTTY et tape:

ls /git

en supposant lsque:

 ABCProject DEFProject

Je peux utiliser la commande

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

pour accéder à l'autre projet.

REMARQUE: En général, git remoteil me parle simplement origindu référentiel à partir duquel j'ai cloné le projet. git remoteserait pratique si vous collaboriez avec deux personnes ou plus travaillant sur le même projet et accédant directement aux référentiels de l'autre plutôt que de tout passer par l'origine.

Dale Wilson
la source
2
C'est une meilleure réponse car elle parle des référentiels plutôt que des branches et explique comment lister les référentiels qui ne sont pas dans le référentiel actuellement extrait
Edward Ross
16

Un moyen simple de voir les branches distantes est:

git branch -r

Pour voir les succursales locales:

git branch -l
Andy Seitz
la source
15
C'est pour les succursales distantes; l'utilisateur a demandé des dépôts distants .
Owen Blacker
4
git ls-remotedevrait vous montrer toutes les télécommandes disponibles pour la récupération à partir du serveur en amont ( git-scm.com/docs/git-ls-remote ). Je crois que toutes les réponses sur cette page vous indiquent uniquement comment répertorier les télécommandes et les branches de suivi que vous avez déjà récupérées, qui est un Catch-22. Vous ne pouvez pas récupérer une télécommande tant que vous ne savez pas comment vous y référer sur le serveur en amont.
Cabine Reb
0

Aucune de ces méthodes ne fonctionne de la façon dont l'interrogateur le demande et dont j'ai souvent eu besoin. par exemple:

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

L'intérêt de cette opération est que vous ne disposez d'aucune information à l'exception de l'utilisateur et du serveur distants et que vous souhaitez savoir à quoi vous avez accès.

La majorité des réponses supposent que vous interrogez à partir d'un ensemble de travail git. Le questionneur suppose que vous ne l'êtes pas.

À titre d'exemple pratique, supposons qu'il existe un référentiel foo.git sur le serveur. Quelqu'un dans sa sagesse décide qu'il doit le changer en foo2.git. Ce serait vraiment bien de faire une liste d'un répertoire git sur le serveur. Et oui, je vois les problèmes pour git. Ce serait quand même bien d'avoir.

Dale Amon
la source
Je suppose que vous devez à nouveau cloner le référentiel distant et recommencer à zéro.
Ferdi Il y a