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/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.
git remote show originuntuk melihat lebih banyak informasi tentang remote itu.
git remote -vhanya membaca dan menulis .git/config.
git config --get remote.origin.url
git remote show originmemanggil 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 -nopsi membuat perintah lebih cepat.
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.
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'