Git'te klonladığınız orijinal deponun adını bulma


Yanıtlar:


91

Depo kökünde, .git/configdosya uzak depolar ve dallar hakkındaki tüm bilgileri tutar. Örneğinizde aşağıdaki gibi bir şey aramalısınız:

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

Ayrıca Git komutu git remote -v, uzak depo adını ve URL'sini gösterir. "Kaynak" uzak depo, genellikle yerel kopyanın klonlandığı orijinal depoya karşılık gelir.


16
git remote show originSadece o uzaktan kumanda hakkında daha fazla bilgi görmek için de kullanabilirsiniz .
Cascabel

1
Görünüşe göre bu iki yöntem Cevap'ta eşdeğerdir - git remote -vsadece okur ve yazar .git/config.
flow2k

103
git config --get remote.origin.url

2
Kabul; bu en iyisidir çünkü git uzak sunucusuna bir bağlantı / yetkilendirme gerektirmez. OP "yerel deponuzu kullanarak" diye sordu, ancak git remote show originağa sesleniyor.
Travis Wilson

1
Gibi bir İşlevi sarılı Bu Casey' cevabı iyi çalışıyor
Jonathan Drapeau

29

Bu, muhtemelen aradığınız hızlı Bash komutu, uzak deponun yalnızca bir temel adını yazdıracaktır:

Nerede getirme dan :

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

Alternatif itmek nereye için :

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

Özellikle bu -nseçenek, komutu çok daha hızlı hale getirir.


11

Bunu kullanıyorum:

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

Hangi gibi bir şey döndürür gitRepo. ( .gitBöyle bir şey döndürmek için komutun sonundaki işareti kaldırın gitRepo.git.)

(Not: Git 2.7.0 veya sonraki bir sürümünü gerektirir)


2

Bu soruyu organization/repogithub veya gitlab gibi bir git sunucusundan almaya çalışırken tökezledim .

Bu benim için çalışıyor:

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

Komutun sedçıktısını git configyalnızca organizasyon ve depo adıyla değiştirmek için kullanır .

Normal ifadedeki github/scientistkarakter sınıfı ile benzer bir şey eşleştirilebilir [[:graph:]].

\1Sadece eşleşti karakterler ile her şeyi değiştirmek için sed söyler.


yazım hatası sonunda .git yerine .get diyor ---- git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
MSillence

Teşekkürler @ MSillence, düzeltildi.
jhnstn

0
git remote show origin -n | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'

Üç farklı URL stiliyle test edildi:

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
ne yaptığını, nasıl cevaplayacağını
Maher

Belki daha fazla bilgi ekleyin, örneğin Ruby bağımlılığı ve bunun hangi platformda test edildiği hakkında (sürüm bilgileri dahil).
Peter Mortensen

0

Bu, değeri elde etmeye çalışacaktır.

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

0

Git repo adı için komutun Powershell sürümü:

(git config --get remote.origin.url) -replace '.*/' -replace '.git'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.