Risposte:
È 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)
-v
per "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 remote
sottocomando avrebbe senso. Se lo vuoi davvero, direi di inviare una richiesta di funzionalità.
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
...
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 ls
trovare 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 ls
dice:
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 remote
mi parla semplicementeorigin
del repository da cui ho clonato il progetto.git remote
sarebbe 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.
Un modo semplice per vedere filiali remote è:
git branch -r
Per vedere le filiali locali:
git branch -l
git ls-remote
dovrebbe 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.
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.
git remote -v
perché -v è per prolisso.git remote
fornisce 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.