Menemukan nama repositori asli yang Anda kloning di Git

Jawaban:

91

Di root repositori, .git/configfile menyimpan semua informasi tentang repositori dan cabang jarak jauh. Dalam contoh Anda, Anda harus mencari sesuatu seperti:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = server:gitRepo.git

Selain itu, perintah Git git remote -vmenunjukkan nama dan URL repositori jarak jauh. Repositori jarak jauh "asal" biasanya sesuai dengan repositori asli, tempat salinan lokal digandakan.

allait
sumber
16
Anda juga dapat menggunakan git remote show originuntuk melihat lebih banyak informasi tentang remote itu.
Kaskabel
1
Sepertinya kedua metode ini ada di Answer yang setara - sepertinya git remote -vhanya membaca dan menulis .git/config.
flow2k
103
git config --get remote.origin.url
Straff
sumber
2
Sepakat; ini yang terbaik karena tidak memerlukan koneksi / auth ke server jarak jauh git. OP bertanya "menggunakan repositori lokal Anda" tetapi git remote show originmemanggil ke jaringan.
Travis Wilson
1
Ini dibungkus dengan nama dasar sebagai jawaban Casey bekerja dengan baik
Jonathan Drapeau
29

Ini adalah perintah Bash cepat, yang mungkin Anda cari, hanya akan mencetak nama dasar dari repositori jarak jauh:

Di mana Anda mengambil dari :

basename $(git remote show -n origin | grep Fetch | cut -d: -f2-)

Atau di mana Anda mendorong ke :

basename $(git remote show -n origin | grep Push | cut -d: -f2-)

Terutama -nopsi membuat perintah lebih cepat.

Casey
sumber
11

Saya menggunakan ini:

basename $(git remote get-url origin) .git

Yang mengembalikan sesuatu seperti gitRepo. (Hapus .gitdi akhir perintah untuk mengembalikan sesuatu seperti gitRepo.git.)

(Catatan: Ini membutuhkan Git versi 2.7.0 atau yang lebih baru)

adzenith
sumber
2

Saya tersandung pada pertanyaan ini mencoba mendapatkan organization/repostring dari host git seperti github atau gitlab.

Ini berhasil untuk saya:

git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'

Ini digunakan seduntuk mengganti output dari git configperintah hanya dengan nama organisasi dan repo.

Sesuatu seperti github/scientistakan dicocokkan dengan kelas karakter [[:graph:]]dalam ekspresi reguler.

The \1memberitahu sed untuk mengganti semuanya hanya dengan karakter yang cocok.

jhnstn
sumber
salah ketik akhir kata .get bukannya .git ---- git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
MSillence
Terima kasih @MSillence, sudah diperbaiki.
jhnstn
0
git remote show origin -n | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'

Itu diuji dengan tiga gaya URL yang berbeda:

echo "Fetch URL: http://user@pass:gitservice.org:20080/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: Fetch URL: [email protected]:home1-oss/oss-build.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: https://github.com/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
haolun
sumber
1
jelaskan apa yang Anda lakukan, cara menjawab
Maher
Mungkin menambahkan lebih banyak informasi, misalnya tentang ketergantungan Ruby dan pada platform apa ini diuji (termasuk informasi versi).
Peter Mortensen
0

Ini akan bekerja untuk mendapatkan nilainya.

#!/usr/bin/env bash
repoSlug="$(git config --get remote.origin.url | cut -d/ -f5 | cut -d. -f1)"
echo ${repoSlug}
joehep
sumber
0

Versi Powershell dari perintah untuk nama repo git:

(git config --get remote.origin.url) -replace '.*/' -replace '.git'
Pemenang
sumber