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.


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

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.


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)


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.


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: git@github.com: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'

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}

0

Versi Powershell dari perintah untuk nama repo git:

(git config --get remote.origin.url) -replace '.*/' -replace '.git'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.