Saat Anda melakukan klon pertama menggunakan sintaks
git clone username@server:gitRepo.git
Apakah mungkin menggunakan repositori lokal Anda untuk menemukan nama klon awal itu?
(Jadi dalam contoh di atas, temukan gitRepo.git
.)
Saat Anda melakukan klon pertama menggunakan sintaks
git clone username@server:gitRepo.git
Apakah mungkin menggunakan repositori lokal Anda untuk menemukan nama klon awal itu?
(Jadi dalam contoh di atas, temukan gitRepo.git
.)
Jawaban:
Di root repositori, .git/config
file 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 -v
menunjukkan nama dan URL repositori jarak jauh. Repositori jarak jauh "asal" biasanya sesuai dengan repositori asli, tempat salinan lokal digandakan.
git remote show origin
untuk melihat lebih banyak informasi tentang remote itu.
git remote -v
hanya membaca dan menulis .git/config
.
git config --get remote.origin.url
git remote show origin
memanggil ke jaringan.
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 -n
opsi membuat perintah lebih cepat.
Saya tersandung pada pertanyaan ini mencoba mendapatkan organization/repo
string 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 sed
untuk mengganti output dari git config
perintah hanya dengan nama organisasi dan repo.
Sesuatu seperti github/scientist
akan dicocokkan dengan kelas karakter [[:graph:]]
dalam ekspresi reguler.
The \1
memberitahu sed untuk mengganti semuanya hanya dengan karakter yang cocok.
git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
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'