Soru Yerel bir Git deposunun ilk olarak klonlandığı URL'yi nasıl belirleyebilirim?


Birkaç gün önce GitHub'dan bir proje çektim. O zamandan beri GitHub'da birkaç çatal bulunduğunu keşfettim ve orijinal olarak aldığımı not etmeyi ihmal ettim. Çektiğim çatallardan hangisini nasıl belirleyebilirim?


2777
2017-11-03 16:47


Menşei


Git 2.7 (Q4 2015) ile, git remote get-url origin Mümkün olabilir. Görmek cevabım aşağıda - VonC
Eminim demek istedin git remote get-url origin. - shiri
codingaffairs.blogspot.com/2017/01/... - Hammad Tariq
git remote get-url origin benim için çalışmaz - muhtemelen kullanım dışı mı? git remote show origin Yine de çalıştı. - Klik
git remote -v Bunun da dahil olmak üzere size bir sürü bilgi verin. - Thorbjørn Ravn Andersen


Cevaplar:


Yalnızca uzak URL'yi veya referans bütünlüğünü kırmak isterseniz:

git config --get remote.origin.url

Tam çıkışa ihtiyacınız varsa veya başvuru bütünlüğü sağlamsa:

git remote show origin

Kullanırken git clone (GitHub veya bu konuyla ilgili herhangi bir kaynak deposu), klonun kaynağı için varsayılan ad "kaynak" dır. kullanma git remote show Bu uzak ad ile ilgili bilgileri görüntüler. İlk birkaç satır şunları göstermelidir:

C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
  Fetch URL: git@github.com:jaredpar/VsVim.git
  Push  URL: git@github.com:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:

Komut dosyasındaki değeri kullanmak istiyorsanız, bu yanıtta listelenen ilk komutu kullanırsınız.


3939
2017-11-03 16:50



Amazon-s3 ile jgit kullanılıyorsa, bunun yerine aşağıda tarif edildiği gibi git config kullanın. - barryku
Orijinal sorunun amacı ile alakalı olmamakla birlikte, "Push URL" yi almayı deneyen ve belirtilen uzaktan kumanda için birden fazla URL girilirse, kullanmanız gerekeceğini lütfen unutmayın. git remote show origin (isteğe bağlı olarak @Casey tarafından sağlanan -n bayrağıyla) veya git remote -v @Montaro ve @ rodel tarafından önerildiği gibi. - Amazingant
"Referans bütünlüğü bozulduysa" ne demektir? Başka bir cevaba yapılan bir yorum, uzak URL'nin "artık kullanılamıyor" olduğu bir durumdan söz ediyor: Bu mu? "ulaşılabilir değil" anlamı "ulaşılamaz" - Eric Lebigot
@JaredPar Referans bütünlüğü ile ne demek istiyorsun? - Akshayraj Kore
Bu sorunun birçok kez yukarı çekildiğini ve çılgın bir kez izlediğini şaşırıyorum. Yığın taşması için pozitif bir teste ve negatif olan bir Git - Mads Boyd-Madsen


Bunu komut dosyası amacıyla istediğinizde, yalnızca

git config --get remote.origin.url

498
2017-11-03 19:35



Bu. Yukarıdaki çözümden daha hızlı. - K-RAN
Bu doğru cevap. Uzak URL artık kullanılamıyorsa, daha hızlıdır ve hatta çalışır.git remote show origin sadece gösterir "conq: depo mevcut değil."). - apfelbox
Bu yapılandırma seçeneği nedeniyle doğru cevap değil url.<base>.insteadOf. Cevabımı gör - git bu amaç için bir komut var. - arcresu
@arcresu Cool, sana +1! Benim savunmamda, bu komuta Mart 2011'e kadar eklenmedi ve Eylül 2012'ye kadar belgelenmedi. - Cascabel
--Git-dir veya --work-tree ile çalışmıyor gibi görünüyor - Catskul


Deneyebilirsin:

git remote -v

Tüm uzaktan kumandalarınızın 'getir / it' URL'lerini basacaktır.


422
2018-01-29 12:01





Cevabı almak için:

git ls-remote --get-url [REMOTE]

Bu, yapılandırmayı okumaktan daha iyidir; bakın adam sayfa git-ls-remote:

--get-url

Verilen uzak deponun URL'sini dikkate alarak genişletin   herhangi "url.<base>.insteadOf" yapılandırma ayarı (Bkz. git-config(1)) ve   uzaktan konuşmadan çık.

@Jefromi tarafından işaret edildiği gibi, bu seçenek eklendi v1.7.5 ve belgelenmemiş v1.7.12.2 (2012-09).


196
2018-06-02 05:15



iyi bir: bu aynı zamanda önceki sürümleri için de aynısını sağlayacaktır> git remote -v | grep getirme | awk '{print $ 2}' - ravi.zombie


Git 2.7 ile (5 Ocak 2015'te yayınlanacak), daha tutarlı bir çözümün var. git remote:

git remote get-url origin

(güzel kolye git remote set-url origin <newurl>)

Görmek 96f78d3 işlemek (16 Eylül 2015) tarafından Ben Boeckel (mathstuf).
(Birleştirilmiş Junio ​​C Hamano - gitster - içinde e437cbd işlemek, 05 Eki 2015):

uzak: get-url alt komutunu ekle

genişleyen insteadOf bir parçası ls-remote --url ve hiçbir yolu yoktur   genişletmek pushInsteadOf de.
  Ekle get-url Hem yapılandırılmış tüm URL'leri almanın bir yolunu hem de sorgulayabilmek için alt komut.

get-url:

Bir uzaktan kumanda için URL'leri alır.
  İçin yapılandırmalar insteadOf ve pushInsteadOf burada genişletilmiş.
  Varsayılan olarak, yalnızca ilk URL listelenir.

  • İle '--push', URL'leri almak yerine URL'leri sorgulanır.
  • İle '--all', uzaktan kumanda için tüm URL'ler listelenecektir.

Git 2.7'den önce:

 git config --get remote.[REMOTE].url
 git ls-remote --get-url [REMOTE]
 git remote show [REMOTE]

63
2017-10-07 12:07



5 yıl sonra çok şey değişti ve bu şimdi kabul edilen cevap olmalı. Ama belki de 2.7 öncesi sözdizimini de ekleyin. - msparer
@msparer Cevabı güncelledim. - VonC


Özetlemek gerekirse, en az dört yol vardır:

(Aşağıdaki resmi Linux deposu için denendi)

En az bilgi:

$ git config --get remote.origin.url
https://github.com/torvalds/linux.git

ve

$ git ls-remote --get-url
https://github.com/torvalds/linux.git

Daha fazla bilgi:

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

Daha fazla bilgi:

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/torvalds/linux.git
  Push  URL: https://github.com/torvalds/linux.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

43
2018-05-15 15:28



Not git config --get remote.origin.urlile ayarlanan orijinal URL'yi alır git remote add ... veya git remote set-url ... süre git ls-remote --get-url origin uzaktan kumandayı erişmek için kullanılan URL'yi alır - varlığında farklı olabilir git config --global url.XXX.insteadOf YYY. Yani her iki çıkış da farklılık gösterebilir!  Ayrıca dikkat edin git ls-remote --get-url (olmadan origin) hiçbir şekilde geri alma originbunun yerine izlenen yukarı akışı gösterir, bu nedenle örneğin ayrık HEAD durumunda başarısız olur. - Tino


Kısa cevap:

$ git remote show -n origin

ya da saf hızlı komut dosyaları için bir alternatif:

$ git config --get remote.origin.url

Bazı bilgi:

  1. $ git remote -v tüm uzaktan kumandaları basacaktır (ne istediğinizi değil). Kökeni doğru mu istiyorsun?
  2. $ git remote show origin çok daha iyi, sadece gösterir origin ama çok uzun sürüyor (git sürüm 1.8.1.msysgit.1'de test edilmiştir).

Ben bitti: $ git remote show -n originEn hızlı gibi görünüyor. İle -n Uzak kafaları (AKA şubeleri) almayacak. Bu tür bilgilere ihtiyacın yok değil mi?

http://www.kernel.org/pub//software/scm/git/docs/git-remote.html

Basvurabilirsin | grep -i fetch Yalnızca üç getirme URL'sini göstermek için her üç sürümüne.

Saf hıza ihtiyacınız varsa, kullanın:

$ git config --get remote.origin.url

Sayesinde @Jefromi Bunu belirtmek için.


16
2018-02-27 18:11





Sanırım onu ​​bulabilirsin .git/config ve remote["origin"] Eğer bunu manipüle etmediysen.


15
2017-11-03 16:50





Yukarı akıştaki uzaktan kumanda "kökeni" olarak adlandırılamayabilir, bu yüzden bir varyasyon:

remote=$(git config --get branch.master.remote)
url=$(git config --get remote.$remote.url)
basename=$(basename "$url" .git)
echo $basename

Veya:

basename $(git config --get remote.$(git config --get branch.master.remote).url) .git

Daha kullanışlı değişkenler için:

$ git config -l

8
2018-04-19 20:49





IP adresini / ana bilgisayar adını almak için origin

İçin ssh:// depoları:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d "/"

İçin git:// depoları:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d ":"

6
2018-06-24 20:54



İçin ssh bu sadece yokluğunda çalışır ~/.ssh/config ana bilgisayar adını veya takma adı yeniden yazar. - Tino


Diğer cevapları tamamlamak için: Eğer uzaktan bir sebepten dolayı değişmişse ve orijinal kökeni, reflogda ilk girişi (yani, komut tarafından görüntülenen son giriş git reflog) Repo'nun başlangıçta klonlandığı yeri belirtmelidir.

Örneğin.

$ git reflog | tail -n 1
f34be46 HEAD@{0}: clone: from https://github.com/git/git
$

(Reflogun temizlenebileceğini aklınızdan çıkarmayın, bu yüzden işe yaramadı.)


6
2017-11-16 12:58



Bu muhtemelen değiştirilmişse "orijinal" uzaktan almak için tek gerçek yoldur. - Justin Ohms
Ancak, mevcut kullanılan uzaktan kumandanın URL'sini göstermez. Kullanılmakta olan URL’yi göstermek için bu çözüme ihtiyacınız olacak: stackoverflow.com/a/40630957/1069083 - rubo77