Daftar remote untuk repositori Git?

542

Saya memiliki repositori Git. Repositori ini memiliki beberapa repositori jarak jauh (saya pikir). Bagaimana saya bisa mendapatkan daftar repositori jarak jauh yang termasuk repositori tersebut?

Suka git list --remotesatau semacamnya?

pendeta
sumber

Jawaban:

750

Anda bisa mendapatkan daftar URL jarak jauh yang dikonfigurasi dengan perintah git remote -v.

Ini akan memberi Anda sesuatu seperti berikut:

base    /home/***/htdocs/base (fetch)
base    /home/***/htdocs/base (push)
origin  [email protected]:*** (fetch)
origin  [email protected]:*** (push)
Matthew Scharley
sumber
18
git remote -vkarena -v adalah untuk verbose. git remotememberikan daftar remote yang sederhana (basis, asal dalam kasus ini). Opsi -v termasuk url untuk operasi pengambilan dan push dari setiap remote.
dhj
2
Saya harus setuju dengan @AlexMills, jika itu git branch --list, itu harus git remote --list
jimmyb
1
-vuntuk "verbose" sebenarnya adalah opsi yang lebih umum. Ini juga didukung oleh git branch. Perbedaan mendasar adalah opsi pendek vs panjang (dasbor tunggal vs ganda, pada dasarnya) Yang mengatakan, mendukung --daftar dengan remotesubperintah akan masuk akal. Jika Anda benar-benar menginginkannya, saya akan mengatakan ajukan permintaan fitur.
Randall
4
Ini mengharuskan seseorang untuk memiliki klon. Ketika mencoba mencari tahu, apa yang harus dikloning , sesuatu yang lain diperlukan ...
Mikhail T.
60

Jika Anda hanya memerlukan nama repositori jarak jauh (dan bukan data lainnya), simpel git remotesudah cukup.

$ git remote
iqandreas
octopress
origin
IQAndreas
sumber
32

FWIW, saya memiliki pertanyaan yang persis sama, tetapi saya tidak dapat menemukan jawabannya di sini. Ini mungkin tidak portabel, tetapi setidaknya untuk gitolite, saya dapat menjalankan yang berikut ini untuk mendapatkan yang saya inginkan:

$ 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
sumber
24

Jawabannya sejauh ini memberi tahu Anda bagaimana menemukan cabang yang ada:

git branch -r

Atau repositori untuk proyek yang sama [lihat catatan di bawah] :

git remote -v

Ada kasus lain. Anda mungkin ingin tahu tentang repositori proyek lain yang dihosting di server yang sama.

Untuk menemukan informasi itu, saya menggunakan SSH atau Putty untuk login ke host dan lsmenemukan direktori yang berisi repositori lainnya. Misalnya, jika saya mengkloning repositori dengan mengetik:

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

dan ingin tahu apa lagi yang tersedia, saya masuk ke git.mycompany.com melalui SSH atau Putty dan ketik:

ls /git

dengan asumsi lsmengatakan:

 ABCProject DEFProject

Saya bisa menggunakan perintah

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

untuk mendapatkan akses ke proyek lain.

CATATAN: Biasanya git remotehanya memberi tahu saya tentang origin- repositori tempat saya mengkloning proyek. git remoteakan berguna jika Anda berkolaborasi dengan dua orang atau lebih yang mengerjakan proyek yang sama dan mengakses repositori satu sama lain secara langsung daripada melewati semuanya melalui asal.

Dale Wilson
sumber
2
Ini adalah jawaban yang lebih baik karena ini berbicara tentang repositori, daripada cabang dan menjelaskan cara membuat daftar repositori yang tidak ada dalam repositori yang saat ini diperiksa
Edward Ross
16

Cara sederhana untuk melihat cabang jarak jauh adalah:

git branch -r

Untuk melihat cabang lokal:

git branch -l
Andy Seitz
sumber
15
Ini untuk cabang yang jauh; pengguna meminta repo jarak jauh .
Owen Blacker
4
git ls-remoteharus memperlihatkan semua remote yang tersedia untuk diambil dari server hulu ( git-scm.com/docs/git-ls-remote ). Saya percaya bahwa semua jawaban di halaman ini hanya memberi tahu Anda cara membuat daftar remote dan cabang pelacakan yang telah Anda ambil, yang merupakan Catch-22. Anda tidak dapat mengambil remote sampai Anda tahu bagaimana merujuknya di server hulu.
Reb.Cabin
0

Tidak satu pun dari metode-metode itu yang berfungsi seperti yang diminta oleh si penanya dan yang sering saya perlukan juga. misalnya:

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

Inti dari melakukan ini adalah bahwa Anda tidak memiliki informasi apa pun kecuali pengguna dan server jarak jauh dan ingin mengetahui apa yang Anda miliki aksesnya.

Mayoritas jawaban menganggap Anda meminta dari dalam set git yang berfungsi. Penanya berasumsi Anda tidak.

Sebagai contoh praktis, asumsikan ada repositori foo.git di server. Seseorang dalam kebijaksanaannya memutuskan bahwa mereka perlu mengubahnya ke foo2.git. Akan sangat menyenangkan untuk melakukan daftar direktori git di server. Dan ya, saya melihat masalah untuk git. Akan tetap menyenangkan untuk memilikinya.

Dale Amon
sumber
Saya kira Anda harus mengkloning repo jarak jauh lagi dan memulai dari awal.
Ferdi