Vraag Hoe kan ik de URL bepalen waarvan een lokale Git-repository oorspronkelijk is gekloond?


Ik heb een paar dagen geleden een project uit GitHub getrokken. Ik heb sindsdien ontdekt dat er verschillende vorken op GitHub staan ​​en ik heb nagelaten op te merken welke ik oorspronkelijk nam. Hoe kan ik bepalen welke van die vorken ik heb getrokken?


2768
2017-11-03 16:47


oorsprong


antwoorden:


Als u alleen de externe URL wilt, of de referentiële integriteit is verbroken:

git config --get remote.origin.url

Als u volledige uitvoer nodig hebt of als de referentiële integriteit intact is:

git remote show origin

Tijdens gebruik git clone (van GitHub, of van welke bronrepository dan ook) de standaardnaam voor de bron van de kloon is "oorsprong". Gebruik makend van git remote show geeft de informatie over deze externe naam weer. De eerste paar regels moeten weergeven:

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:

Als u de waarde in het script wilt gebruiken, gebruikt u de eerste opdracht die in dit antwoord wordt vermeld.


3926
2017-11-03 16:50



Als u dit wilt voor scripting doeleinden, kunt u alleen de URL krijgen met

git config --get remote.origin.url

497
2017-11-03 19:35



Je kan het proberen:

git remote -v

Hiermee worden alle ophaal- / push-URL's van uw remotes afgedrukt.


421
2018-01-29 12:01



Om het antwoord te krijgen:

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

Dit is beter dan het lezen van de configuratie; verwijs naar de man pagina voor git-ls-remote:

--get-url

Breid de URL van de gegeven externe repository uit, rekening houdend met   ieder "url.<base>.insteadOf" configuratie instellen (Zie git-config(1)) en   afsluiten zonder met de afstandsbediening te praten.

Zoals opgemerkt door @Jefromi, is deze optie toegevoegd in v1.7.5 en niet gedocumenteerd tot v1.7.12.2 (2012-09).


195
2018-06-02 05:15



Met Git 2.7 (release 5 januari 2015), heb je een meer coherente oplossing met git remote:

git remote get-url origin

(mooie hanger van git remote set-url origin <newurl>)

Zien commit 96f78d3 (16 september 2015) door Ben Boeckel (mathstuf).
(Samengevoegd door Junio ​​C Hamano - gitster - in commit e437cbd, 5 oktober 2015):

remote: voeg get-url-subopdracht toe

Uitbreiden insteadOf is een onderdeel van ls-remote --url en er is geen manier   uitbreiden pushInsteadOf ook.
  Voeg een ... toe get-url subopdracht om beide te kunnen bevragen, evenals een manier om alle geconfigureerde URL's te krijgen.

get-url:

Haalt de URL's op van een afstandsbediening.
  Configuraties voor insteadOf en pushInsteadOf zijn hier uitgebreid.
  Standaard wordt alleen de eerste URL vermeld.

  • Met '--push', worden push-URL's opgevraagd in plaats van URL's op te halen.
  • Met '--all'worden alle URL's voor de afstandsbediening weergegeven.

Voor git 2.7 had je:

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

63
2017-10-07 12:07



Samengevat, er zijn minstens vier manieren:

(Het volgende is geprobeerd voor de officiële Linux-repository)

Minst informatie:

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

en

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

Meer informatie:

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

Nog meer informatie:

$ 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



Kort antwoord:

$ git remote show -n origin

of, een alternatief voor pure snelle scripts:

$ git config --get remote.origin.url

Wat info:

  1. $ git remote -v zal alle afstandsbedieningen afdrukken (niet wat u wilt). U wilt de oorsprong toch?
  2. $ git remote show origin veel beter, alleen shows origin maar duurt te lang (getest op git-versie 1.8.1.msysgit.1).

Ik eindigde met: $ git remote show -n origin, dat lijkt het snelst te zijn. Met -n het zal geen afstandskoppen (AKA-takken) ophalen. Dat type info heb je niet nodig, toch?

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

U kunt solliciteren | grep -i fetch naar alle drie versies om alleen de ophaal-URL te tonen.

Als je pure snelheid nodig hebt, gebruik dan:

$ git config --get remote.origin.url

Dankzij @Jefromi om dat te wijzen.


16
2018-02-27 18:11



Ik denk dat je het onder kunt vinden .git/config en remote["origin"] als je dat niet hebt gemanipuleerd.


15
2017-11-03 16:50



De afstandsbediening van de bovenstroomse mag niet "oorsprong" worden genoemd, dus hier is een variatie:

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

Of:

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

Voor meer bruikbare variabelen is er:

$ git config -l

8
2018-04-19 20:49



Om het IP-adres / de hostnaam van te krijgen origin

Voor ssh:// repositories:

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

Voor git:// repositories:

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

6
2018-06-24 20:54



Om de andere antwoorden aan te vullen: Als de afstandsbediening om wat voor reden dan ook is gewijzigd en dus niet de origineel oorsprong, de allereerste vermelding in de reflog (dat wil zeggen, de laatste invoer die wordt weergegeven door de opdracht git reflog) moet aangeven waar de repo oorspronkelijk is gekloond.

bijv.

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

(Houd er rekening mee dat de reflog mogelijk wordt verwijderd, dus dit werkt niet gegarandeerd.)


6
2017-11-16 12:58