21 Soru: Yerel Git deposunun başlangıçta klonlandığı URL’yi nasıl belirleyebilirim?

tarafından oluşturulan soru Sun, Nov 1, 2015 12:00 AM

Birkaç gün önce GitHub'tan bir proje çıkardım. O zamandan beri GitHub'da birkaç çatal olduğunu keşfettim ve hangisini ilk aldığımı not etmeyi ihmal ettim. Bu çatallardan hangisini çektiğimi nasıl belirleyebilirim?

    
3429
  1. Git 2.7 (2015 4. Çeyrek) ile git remote get-url origin mümkün olacak. aşağıdaki cevabım bölümüne bakın
    2015-10-07 12: 08: 41Z
  2. 2017-01-19 10: 55: 24Z
  3. git remote get-url origin benim için çalışmıyor - muhtemelen kullanımdan kaldırıldı? git remote show origin da çalıştı.
    2017-10-25 16: 47: 04Z
  4. git remote -v, size bununla birlikte birçok bilgi verir.
    2017-12-10 12: 21: 49Z
  5. 21 Yanıtlar                              21                         

    Yalnızca uzak URL’yi istiyorsanız veya başvurusal bütünlük kırılmışsa:

     
    git config --get remote.origin.url
    

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

     
    git remote show origin
    

    git clone kullanırken (GitHub'dan veya bu konuda herhangi bir kaynak havuzundan), klon kaynağının varsayılan adı "kaynak" tır. git remote show kullanılması, bu uzak ad hakkındaki bilgileri görüntüler. İlk birkaç satır 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 cevapta listelenen ilk komutu kullanırsınız.

        
    4872
    2018-04-16 13: 24: 57Z
    1. Amazon-s3 ile jgit kullanıyorsanız bunun yerine git config komutunu kullanın.
      2012-03-29 17: 20: 40Z
    2. Orijinal sorunun amacı ile ilgili olmasa da, lütfen "Push URL" yi almaya çalışırken ve belirtilen uzaktan kumanda için birden fazla URL girildiğini unutmayın. ya isteğe bağlı olarak @Casey tarafından sağlanan -n bayrağıyla birlikte git remote show origin veya @Montaro ve @rodel tarafından önerilen git remote -v'u kullanmanız gerekir.
      2014-07-24 14: 39: 40Z
    3. Referans bütünlüğü bozulduysa "ne anlama geliyor? Uzak URL’nin "artık mevcut değil" olduğu bir durumdan bahseden bir yanıt daha var: yorum bu mu? "erişilebilir değil", "erişilebilir değil" anlamına gelir.
      2015-07-15 12: 49: 12Z
    4. @ JaredPar Referans bütünlüğü ile ne demek istiyorsunuz?
      2016-01-29 20: 53: 24Z
    5. Bu sorunun çok fazla oylandığını ve çılgınca zamanlar gördüğünü şaşırtıcı buluyorum. Yığın taşması için olumlu bir vasiyet ve Git için olumsuz olanı:
      2017-07-18 14: 23: 10Z

    Bunu komut dosyası amacıyla kullanmak isterseniz, yalnızca URL’yi

    ile alabilirsiniz.  
    git config --get remote.origin.url
    
        
    571
    2015-02-17 19: 34: 10Z
    1. Bu eşdoğru cevap Uzak URL artık mevcut değilse, çok daha hızlıdır ve hatta çalışır (git remote show origin sadece "conq: repository değil" gösterir).
      2013-05-22 06: 58: 10Z
    2. Bu, url.<base>.insteadOf yapılandırma seçeneğinden dolayı doğru cevap değil. Cevabımı gör - git'in bu amaç için bir emri var.
      2013-06-02 05: 17: 08Z
    3. @ arcresu Harika, +1 sana! Savunmamda bu komut Mart 2011'e kadar eklenmedi ve Eylül 2012'ye kadar belgelenmedi.
      2013-06-02 06: 03: 07Z
    4. --git-dir veya --work-tree
      ile çalışmıyor gibi görünüyor
      2014-03-21 20: 25: 01Z
    5. @ Catskul Sadece --git-dir ilişkilidir (config git dir, çalışma ağacının konumundan bağımsızdır) ve benim için çalışıyor. Üst dizini yerine gerçek .git dizinine giden yolu belirlediğinizden emin misiniz?
      2014-03-21 21: 53: 19Z

    Deneyebilirsiniz:

     
    git remote -v
    

    Tüm uzaktan kumandalarınızın 'URL’leri al /gönder' i basacaktır.

        
    482
    2015-02-24 04: 19: 43Z

    Cevabı almak için:

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

    Bu, yapılandırmayı okumaktan daha iyidir; git-ls-remote için man sayfasına bakın :

      

    - get-url

         

    Verilen uzak havuzun URL’sini dikkate alarak genişletin   herhangi bir "url.<base>.insteadOf" yapılandırma ayarı (bkz. git-config(1)) ve   uzaktan kumandayla konuşmadan çıkın.

    @Jefromi tarafından belirtildiği gibi, bu seçenek v1.7.5 'de eklenmiştir. v1.7.12.2 (2012-09) 'a kadar belgelenmemiş.     

    232
    2018-07-25 20: 12: 46Z
    1. iyi olanı: bu, önceki sürümler için de aynı şeyi sağlayacaktır > git uzak -v | grep fetch | awk '{print $2}'
      2015-07-17 20: 26: 41Z
    2. Diğer cevapların çoğunda git komutları hakkında daha çok göster-anlat ve git geçmişi hakkında açıklama olduğunu düşünüyorum. Bu, giriş akışınızın origin olarak adlandırıldığını varsaymayan tek cevaptır.
      2018-12-18 14: 41: 42Z
    3. Bu eski remote get-url seçeneğinin en doğrudan alternatifidir. Bu bir bırakma değişikliği.
      2019-03-15 22: 07: 18Z

    Git 2.7 ile (5 Ocak 2015 tarihli sürüm), git remote kullanarak daha uyumlu bir çözümünüz var:

     
    git remote get-url origin
    

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

    Bkz. 96f78d3 yerine getirin (16 Eylül 2015) Ben Boeckel (mathstuf) .
    ( Junio ​​C Hamano - gitster - tarafından birleştirildi) > e437cbd taahhütte , 05 Eki 2015) :

      

    uzaktan: get-url alt komutunu ekleyin

         

    insteadOf’un genişletilmesi, ls-remote --url’un bir parçasıdır ve mümkün değildir   pushInsteadOf’u da genişletmek istiyor.
      Hem bir sorgu almanın hem de sorgulamanın bir get-url alt komutunu ekleyin.ll yapılandırılmış URL’ler.

     
    get-url:
    
      

    Uzaktakilerin URL'lerini alır.
      insteadOf ve pushInsteadOf için yapılandırmalar burada genişletildi.   Varsayılan olarak, yalnızca ilk URL listelenir.

         
    • '--push' ile, URL'leri almak yerine push URL'leri sorgulanır.
    •   
    • '--all' ile uzaktan kumandanın tüm URL'leri listelenir.
    •   

    Git 2.7'den önce, şunları yaptınız:

     
     git config --get remote.[REMOTE].url
     git ls-remote --get-url [REMOTE]
     git remote show [REMOTE]
    
        
    91
    2016-01-05 08: 03: 18Z
    1. 5 yıl sonra çok şey değişti ve bu şimdi kabul edilen cevap olmalı. Ancak belki 2.7 öncesi sözdizimini de ekleyebilirsiniz.
      2015-12-14 08: 17: 58Z

    Özetlemek için, 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)
    
        
    53
    2015-11-01 10: 28: 17Z
    1. Not git config --get remote.origin.url, git remote add ... veya git remote set-url ... ile ayarlanan orijinal URL’yi, git ls-remote --get-url origin ise uzaktan kumandaya erişmek için kullanılan URL’yi alır; . Dolayısıyla her iki çıkış da farklı olabilir! Ayrıca git config --global url.XXX.insteadOf YYY’un (git ls-remote --get-url olmadan) gerektiğinde origin’u almadığını unutmayın; bunun yerine izlenen giriş akışını gösterir, bu nedenle örneğin ayrılmış HEAD durumunda başarısız olur.
      2014-12-07 09: 27: 02Z

    Kısa cevap:

     origin

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

     
    $ git remote show -n origin
    

    Bazı bilgiler:

    1.  
      $ git config --get remote.origin.url
      
      tüm uzaktan kumandaları yazdıracak (istediğiniz şeyi değil). Menşei doğru mu istiyorsun?
    2.  $ git remote -v, çok daha iyi, yalnızca $ git remote show origin’u gösteriyor, ancak çok uzun sürüyor (git sürüm 1.8.1.msysgit.1’de test edildi).

    Sona geldim: origin, ki bu en hızlı görünüyor. $ git remote show -n origin ile uzak kafaları (AKA dalları) almayacak. Bu tür bilgilere ihtiyacınız yok, değil mi?

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

    Yalnızca alım URL’sini göstermek için üç sürümün tümüne -n uygulayabilirsiniz.

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

     | grep -i fetch

    Buna dikkat çektiğiniz için @Jefromi teşekkürler.

        
    20
    2017-05-23 12: 18: 26Z

    Bunu değiştirmediyseniz,

    $ git config --get remote.origin.url
    
    ve .git/config altında bulabileceğinizi düşünüyorum.     
    18
    2010-11-03 16: 50: 48Z

    Git URL'si Git yapılandırma dosyasının içinde olacaktır. Değer, remote["origin"] anahtarına karşılık gelir.

    Mac ve Linux için aşağıdaki komutları kullanın:

     url

    Windows için aşağıdaki dosyayı herhangi bir metin düzenleyicide açın ve

     cd project_dir
     cat .git/config | grep url | awk '{print $3}'
    
    anahtarının değerini bulun.  url

    Not: Bu, çevrimdışı olsanız veya uzak git sunucusu kaldırılsa bile çalışacaktır.

        
    11
    2019-05-10 09: 26: 26Z
    1. Özgün kasayı barındıran uzak sunucu alındıysa bu benim için işe yaradı. Diğer tüm girişimler başarısız oldu:
      project_dir/.git/config
      
      , git remote get-url origin >> fatal: No such remote 'origin'
      2018-09-11 18: 21: 09Z

    Git komutlarının tüm parametrelerini asla hatırlayamıyorum, bu yüzden git config --get remote.origin.url >> dosyasında bana daha anlamlı olan bir diğer ad koydum, böylece hatırlayabilirim ve daha az yazmaya neden olur:

     ~/.gitconfig

    Terminali yeniden yükledikten sonra, şunu yazabilirsiniz:

     
    [alias]
    url = ls-remote --get-url
    

    Sık kullandıklarımdan birkaçı:

     
    > git url
    
        
    10
    2018-07-25 20: 18: 18Z
    1. Bunu çok beğendim!
      2019-06-26 07: 53: 16Z

    Yukarı akış hattının uzaktan kumandası "kökeni" olarak adlandırılmayabilir, işte burada bir varyasyon:

     
    [alias]
    cd = checkout
    ls = branch
    lsr = branch --remote
    lst = describe --tags
    

    Veya:

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

    Daha faydalı değişkenler için:

     
    basename $(git config --get remote.$(git config --get branch.master.remote).url) .git
    
        
    8
    2018-07-25 20: 05: 54Z

    Temelde kullanıyorum:

     
    $ git config -l
    

    Windows'ta Git Bash komut konsolu veya CMD komut konsolu için çalışıyor. Bu, Git'in 2.x sürümüyle çalıştığını söyledi.

        
    8
    2018-07-25 20: 17: 21Z

    Benim için bu en kolay yoldur (daha az yazarak):

     
    git remote get-url origin
    

    aslında, bunu

    $ git remote -v
    origin    https://github.com/torvalds/linux.git (fetch)
    origin    https://github.com/torvalds/linux.git (push)
    
    olarak adlandırılan alias’a yazdım:  s

    Profilinize şununla ekleyebilirsiniz:  

    git remote -v
    git status
    
        
    8
    2019-02-11 18: 39: 37Z

    alias s='git remote -v && git status'’un IP adresini /ana bilgisayar adını almak için

    origin depolar için:

     ssh://

    git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d "/"
    
    depolar için:  git://     
    7
    2015-11-01 10: 29: 03Z
    1. git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d ":"
      
      için bu yalnızca ana bilgisayar adını veya diğer adını yeniden yazan ssh'un olmaması durumunda çalışır.
      2014-12-07 09: 33: 54Z

    Diğer cevapları desteklemek için: Uzaktan kumanda bir nedenden dolayı değiştirilmişse ve orijinal kaynağını yansıtmıyorsa, reflog'daki ilk giriş (yani, tarafından gösterilen son giriş komut ~/.ssh/config), reponun orijinal olarak nereden klonlandığını belirtmelidir.

    örn.

     git reflog

    (Reflogun temizlenebileceğini unutmayın, bu yüzden bunun çalışması garanti edilmez.)

        
    7
    2015-11-16 12: 58: 41Z
    1. Bu, değiştirilmişse "orijinal" kumandayı almanın tek gerçek yoludur.
      2016-07-20 23: 57: 38Z

    $ git reflog | tail -n 1
    f34be46 HEAD@{0}: clone: from https://github.com/git/git
    $
    
    ile projeler dizininde olmalısınız. Ancak, URL’leri başka bir yerden belirlemek istiyorsanız kullanabilirsiniz:  git remote show origin

    Bu komuta sık sık ihtiyacınız olursa,

    cat <path2project>/.git/config | grep url
    
    veya .bashrc’da MacOS ile bir takma ad tanımlayabilirsiniz.  .bash_profile

    Öyleyse, URL'sini almak için Git kök klasöründe

    alias giturl='cat ./.git/config | grep url'
    
    'u aramanız yeterli.

    Bu takma adı bu şekilde genişletirseniz

     giturl

    öncekinden yalnızca düz URL’yi alırsınız

      

    "url ="

    in

      

    url = http://example.com/repo.git

    kullanımında daha fazla olanak elde edersiniz:

    Örnek

    Mac’te URL’yi standart tarayıcıda açmak için

    alias giturl='cat .git/config | grep -i url | cut -d'=' -f 2'
    
    ’u arayabilirsiniz.

    Veya Linux'taki Chrome tarayıcısında açmak için open $(giturl)'u kullanın.

        
    6
    2018-07-25 08: 12: 52Z

    chrome $(giturl) dosyayı açmanın basit bir yolu:

     .git/config

    Düzenlemek için:

    cat .git/config
    
    veya

    vim .git/config

        
    6
    2018-07-25 20: 14: 21Z
    1. Bu Linux'ta olduğunuzu varsayıyor (?).
      2018-07-25 20: 15: 43Z

    İsteğe bağlı olarak adlandırılan uzaktan alım URL'lerini yazdır:

     nano .git/config     
    5
    2015-09-01 14: 34: 45Z

    Bir dalın giriş yönündeki uzaktan kumandanın adını bilmiyorsanız, önce geçerli dalın üzerine kurulu akış yönündeki dal adını denetleyerek bu ifadeye bakabilirsiniz. Bu gibi

    git remote -v | grep fetch | awk '{print $2}'
    
    kullanın:  git rev-parse

    Bu, mevcut dalın kaynağı olan yukarı akıştaki dalı gösterir. Bunun gibi uzaktaki adı almak için ayrıştırılabilir:

     
    git rev-parse --symbolic-full-name --abbrev-ref @{upstream}
    

    Şimdi bunu alın ve

    git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1
    
    'a aktarın; mevcut şubenin kaynağı olan yukarı yöndeki uzaktan kumandanın URL’sini alacaksınız:  git ls-remote

    Şimdi belirtilmesi gerekir ki, bunun mutlaka klonlanan kaynak uzak havuz ile aynı olması gerekmez. Ancak birçok durumda yeterli olacaktır.

        
    4
    2017-08-09 00: 38: 04Z
     
    git ls-remote --get-url \
      $(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1)
    

    Kullanım:

     
    #!/bin/bash
    
    git-remote-url() {
     local rmt=$1; shift || { printf "Usage: git-remote-url [REMOTE]\n" >&2; return 1; }
     local url
    
     if ! git config --get remote.${rmt}.url &>/dev/null; then
      printf "%s\n" "Error: not a valid remote name" && return 1
      # Verify remote using 'git remote -v' command
     fi
    
     url=`git config --get remote.${rmt}.url`
    
     # Parse remote if local clone used SSH checkout
     [[ "$url" == git@* ]] \
     && { url="https://github.com/${url##*:}" >&2; }; \
     { url="${url%%.git}" >&2; };
    
     printf "%s\n" "$url"
    }
    

    Çıktı:

     
    # Either launch a new terminal and copy `git-remote-url` into the current shell process, 
    # or create a shell script and add it to the PATH to enable command invocation with bash.
    
    # Create a local clone of your repo with SSH, or HTTPS
    git clone git@github.com:your-username/your-repository.git
    cd your-repository
    
    git-remote-url origin
    
        
    3
    2018-02-01 21: 56: 42Z
     
    https://github.com/your-username/your-repository
    

    Bu komut, havuzunuzla ilgili tüm bilgileri verecektir.

        
    0
    2019-05-28 07: 20: 08Z
    git config --list
    
kaynak yerleştirildi İşte