Elenco dei telecomandi per un repository Git?


542

Ho un repository Git. Questo repository ha più repository remoti (credo). Come posso ottenere un elenco dei repository remoti che appartengono a tale repository?

Piace git list --remoteso qualcosa del genere?

Risposte:


750

È possibile ottenere un elenco di tutti gli URL remoti configurati con il comando git remote -v.

Questo ti darà qualcosa di simile al seguente:

base    /home/***/htdocs/base (fetch)
base    /home/***/htdocs/base (push)
origin  git@bitbucket.org:*** (fetch)
origin  git@bitbucket.org:*** (push)

18
git remote -vperché -v è per prolisso. git remotefornisce un semplice elenco di telecomandi (base, origine in questo caso). L'opzione -v include l'URL per entrambe le operazioni di recupero e push di ciascun telecomando.
dhj

2
Devo essere d'accordo con @AlexMills, se si tratta di git branch --list, dovrebbe essere git remote --list
jimmyb

1
-vper "verbose" è in realtà l'opzione più comune. È anche supportato da git branch. La differenza di base è opzioni short vs long (essenzialmente trattino singolo o doppio) Detto questo, supportare --list con il remotesottocomando avrebbe senso. Se lo vuoi davvero, direi di inviare una richiesta di funzionalità.
Randall

4
Ciò richiede che si abbia già un clone. Quando si cerca di capire, da che parte clonare , è necessario qualcos'altro ...
Mikhail T.

60

Se hai solo bisogno dei nomi dei repository remoti (e non di nessuno degli altri dati), git remoteè sufficiente un semplice .

$ git remote
iqandreas
octopress
origin

32

FWIW, avevo esattamente la stessa domanda, ma non riuscivo a trovare la risposta qui. Probabilmente non è portatile, ma almeno per la gitolite, posso eseguire quanto segue per ottenere quello che voglio:

$ 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

Le risposte finora ti dicono come trovare filiali esistenti:

git branch -r

O repository per lo stesso progetto [vedi nota sotto] :

git remote -v

C'è un altro caso. Potresti voler conoscere altri repository di progetto ospitati sullo stesso server.

Per scoprire tali informazioni, utilizzo SSH o PuTTY per accedere all'host e lstrovare le directory contenenti gli altri repository. Ad esempio, se ho clonato un repository digitando:

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

e voglio sapere cos'altro è disponibile, accedo a git.mycompany.com tramite SSH o PuTTY e digito:

ls /git

assumendo lsdice:

 ABCProject DEFProject

Posso usare il comando

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

per ottenere l'accesso all'altro progetto.

NOTA: di solito git remotemi parla semplicemente origindel repository da cui ho clonato il progetto. git remotesarebbe utile se tu stessi collaborando con due o più persone che lavorano allo stesso progetto e accedendo direttamente ai rispettivi archivi invece di passare tutto attraverso l'origine.


2
Questa è una risposta migliore perché parla dei repository, piuttosto che dei rami e spiega come elencare i repository che non si trovano nel repository attualmente verificato
Edward Ross,

16

Un modo semplice per vedere filiali remote è:

git branch -r

Per vedere le filiali locali:

git branch -l

15
Questo è per filiali remote; l'utente ha chiesto repository remoti .
Owen Blacker,

4
git ls-remotedovrebbe mostrarti tutti i telecomandi disponibili per il recupero dal server upstream ( git-scm.com/docs/git-ls-remote ). Credo che tutte le risposte in questa pagina ti dicano solo come elencare i telecomandi e i rami di tracciamento che hai già recuperato, che è un Catch-22. Non è possibile recuperare un telecomando finché non si sa come fare riferimento ad esso sul server upstream.
Reb.Cabin

0

Nessuno di questi metodi funziona nel modo richiesto dall'interrogante e di cui ho spesso avuto bisogno. per esempio:

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

Il punto fondamentale di farlo è che non hai alcuna informazione tranne l'utente remoto e il server e vuoi scoprire a cosa hai accesso.

La maggior parte delle risposte presuppone che tu stia eseguendo una query all'interno di un gruppo di lavoro git. L'interrogante sta assumendo che tu non lo sia.

Come esempio pratico, supponiamo che ci fosse un repository foo.git sul server. Qualcuno nella loro saggezza decide che devono cambiarlo in foo2.git. Sarebbe davvero bello fare un elenco di una directory git sul server. E sì, vedo i problemi per Git. Sarebbe comunque bello averlo.


Immagino che dovresti clonare nuovamente il repository remoto e ricominciare tutto da capo.
Ferdi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.