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

Ik heb een paar dagen geleden een project van GitHub gehaald. Sindsdien heb ik ontdekt dat er verschillende forks op GitHub zijn, en ik vergat te noteren welke ik oorspronkelijk nam. Hoe kan ik bepalen aan welke van die vorken ik heb getrokken?


Antwoord 1, autoriteit 100%

Als u alleen de externe URL wilt, of als u niet bent verbonden met een netwerk dat de externe repo kan bereiken:

git config --get remote.origin.url

Als u volledige uitvoer nodig heeft en u bevindtzich op een netwerk dat de externe repo waar de oorsprong zich bevindt, kan bereiken:

git remote show origin

Bij gebruik van git clone(van GitHub, of welke broncode dan ook) is de standaardnaam voor de bron van de kloon “oorsprong”. Door git remote showte gebruiken, wordt de informatie over deze remote-naam weergegeven. De eerste paar regels moeten tonen:

C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
  Fetch URL: [email protected]:jaredpar/VsVim.git
  Push  URL: [email protected]: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.


Antwoord 2, autoriteit 10%

Als je dit voor scriptdoeleinden wilt, kun je alleen de URL krijgen met

git config --get remote.origin.url

Antwoord 3, autoriteit 10%

Je kunt het proberen:

git remote -v

Het zal alle ophaal-/push-URL’s van uw afstandsbedieningen afdrukken.


Antwoord 4, autoriteit 4%

Om het antwoord te krijgen:

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

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

–get-url

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

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


Antwoord 5, autoriteit 2%

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

git remote get-url origin

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

Zie commit 96f78d3(16 sep 2015) door Ben Boeckel (mathstuf).
(Samengevoegd door Junio C Hamano — gitsterin commit e437cbd, 05 okt 2015):

remote: get-url subcommando toevoegen

Het uitbreiden van insteadOfis een onderdeel van ls-remote --urlen er is geen manier
om ook pushInsteadOfuit te breiden.
Voeg een get-urlsubcommando toe om beide te kunnen bevragen, evenals een manier om alle geconfigureerde URL’s op te halen.

get-url:

Haalt de URL’s voor een afstandsbediening op.
Configuraties voor insteadOfen pushInsteadOfworden hier uitgebreid.
Standaard wordt alleen de eerste URL weergegeven.

  • 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.

Vóór git 2.7 had je:

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

Antwoord 6

Om samen te vatten, er zijn minstens vier manieren:

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

Minste 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)

Antwoord 7

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


Antwoord 8

Kort antwoord:

$ git remote show -n origin

of een alternatief voor pure snelle scripts:

$ git config --get remote.origin.url

Enkele info:

  1. $ git remote -vKrijgt alle afstandsbedieningen af ​​(niet wat u wilt). Wil je herkomst toch?
  2. $ git remote show originVeel beter, toont alleen originmaar duurt te lang (getest op git-versie 1.8.1.MSYGIT.1).

Ik eindigde met: $ git remote show -n origin, die het snelst lijkt te zijn. Met -nzal het geen externe hoofden (AKA-vestigingen) ophalen. U hebt dat type informatie niet nodig, toch?

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

U kunt | grep -i fetchNaar alle drie de versies om alleen de FETCH-URL te tonen.

Als u pure snelheid nodig heeft, gebruikt u:

$ git config --get remote.origin.url

Dankzij @jefromi om dat uit te wijzen.


Antwoord 9

Voor mij is dit de gemakkelijkere manier (minder typen):

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

Eigenlijk, ik heb dat in een aliasgenaamd sdat:

git remote -v
git status

U kunt toevoegen aan uw profiel met:
alias s='git remote -v && git status'


Antwoord 10

Ik kan nooit alle parameters herinneren aan Git-opdrachten, dus doe ik gewoon een alias in de ~/.gitconfigbestand die meer logisch voor mij is, dus ik kan het me herinneren, en het resulteert in minder typen:

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

Na het herladen van de terminal kunt u dan alleen typen:

> git url

Hier zijn er nog een paar die ik vaak gebruik:

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

Ik raad git-extrasook ten zeerste aan met een git infocommandodat veel meer gedetailleerde informatie geeft over de externe en lokale vestigingen.


Antwoord 11

Ik geef de voorkeur aan deze omdat het gemakkelijker te onthouden is:

git config -l

Het zal alle nuttige informatie weergeven, zoals:

user.name=Your Name
[email protected]
core.autocrlf=input
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://github.com/mapstruct/mapstruct-examples
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

Antwoord 12

De Git-URL bevindt zich in het Git-configuratiebestand. De waarde komt overeen met de sleutel url.

Gebruik voor Mac en Linux de onderstaande commando’s:

cd project_dir
 cat .git/config | grep url | awk '{print $3}'

Voor Windows opent u het onderstaande bestand in een teksteditor en zoekt u de waarde voor key url.

project_dir/.git/config

Opmerking: dit werkt zelfs als je offline bent of als de externe git-server is verwijderd.


Antwoord 13

Ik gebruik in principe:

git remote get-url origin

Het werkt voor de Git Bash-opdrachtconsole of CMD-opdrachtconsole in Windows. Dat gezegd hebbende, het werkt met versie 2.x van Git.


Antwoord 14

git config --list

Deze opdracht geeft alle informatie met betrekking tot uw repository.


Antwoord 15

De afstandsbediening van de stroomopwaartse 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

Antwoord 16

Om het IP-adres/de hostnaam van origin

te krijgen

Voor ssh://opslagplaatsen:

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

Voor git://opslagplaatsen:

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

Antwoord 17

Om de andere antwoorden aan te vullen: als de afstandsbediening om de een of andere reden is gewijzigd en dus niet de oorspronkelijke-oorsprong weergeeft, wordt het allereerste item in de reflog (dwz het laatste item weergegeven door de commando git reflog) zou moeten aangeven waar de repo oorspronkelijk vandaan werd gekloond.

bijv.

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

(Houd er rekening mee dat de reflog kan worden verwijderd, dus het is niet gegarandeerd dat dit werkt.)


Antwoord 18

Met git remote show originmoet je in de projects directory zijn. Maar als u de URL’s ergens anders wilt bepalen
je zou kunnen gebruiken:

cat <path2project>/.git/config | grep url

Als je deze opdracht vaak nodig hebt, kun je een alias definiëren in je .bashrcof .bash_profilemet MacOS.

alias giturl='cat ./.git/config | grep url'

Dus u hoeft alleen maar giturlin de git-root-map te bellen om eenvoudig de URL te verkrijgen.


Als u deze alias als deze verlengt

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

U krijgt alleen de duidelijke URL zonder de voorgaande

“URL =”

in

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

U krijgt meer mogelijkheden in het gebruik:

voorbeeld

Op Mac kunt u bellen open $(giturl)om de URL in de standaardbrowser te openen.

of chrome $(giturl)om deze te openen met de Chrome-browser op Linux.


Antwoord 19

Een eenvoudige manier is om de .git/configbestand te openen:

cat .git/config

Bewerken:

vim .git/configOF

nano .git/config


Antwoord 20

Print willekeurig genaamd Remote Fetch-URL’s:

git remote -v | grep fetch | awk '{print $2}'

Antwoord 21

u hebt uw repo gekloneerd met SSH-kloon.

git config --get remote.origin.url
[email protected]:company/product/production.git

Maar u wilt HTTP-URL krijgen om deze in de browser te openen of het te delen:

git config --get remote.origin.url | sed -e 's/:/\//g'| sed -e 's/ssh\/\/\///g'| sed -e 's/git@/https:\/\//g'
https://gitlab.com/company/product/production.git

Github of Gitlab er niet toe.


Antwoord 22

Als u de naam van de upstream-afstandsbediening voor een vertakking niet weet, kunt u die eerst opzoeken door de naam van de stroomopwaartse vertakking te inspecteren waarop de huidige vertakking is gebouwd. Gebruik git rev-parseals volgt:

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

Dit toont die stroomopwaartse vertakking die de bron was voor de huidige vertakking. Dit kan worden geparseerd om de externe naam als volgt te krijgen:

git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1

Neem dat nu en pijp het naar git ls-remoteen je krijgt de URL van de upstream remote die de bron is van de huidige branch:

git ls-remote --get-url \
  $(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1)

Nu moet worden opgemerkt dat dit niet noodzakelijk hetzelfde is als de externe bronrepository waaruit is gekloond. In veel gevallen zal het echter voldoende zijn.


Antwoord 23

#!/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"
}

Gebruik:

# 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 [email protected]:your-username/your-repository.git
cd your-repository
git-remote-url origin

Uitgang:

https://github.com/your-username/your-repository

Antwoord 24

EASY Gebruik gewoon deze opdracht waar u de map hebt geplaatst

git config --get remote.origin.url

Als u bent aangesloten op Netwerk

git remote show origin

Het toont u de URL waarvoor een lokale git-repository oorspronkelijk is gekloond.

Ik hoop dat deze hulp


Antwoord 25

Om alleen de externe URL te krijgen:

git config --get remote.origin.url

Gebruik de

om meer informatie over een bepaalde afstandsbediening te krijgen

git remote show [remote-name] command

Om afstandsbediening op afstand te zien

git remote show origin

om te zien waar u de map hebt geplaatst

git config --get remote.origin.url

Antwoord 26

alias git-repo="git config --get remote.origin.url | sed -e 's/:/\//g'| sed -e 's/ssh\/\/\///g'| sed -e 's/git@/https:\/\//g'"
alias git-pr="git config --get remote.origin.url | sed -e 's/:/\//g'| sed -e 's/ssh\/\/\///g'| sed -e 's/git@/https:\/\//g' | sed 's/....$//' | sed -ne 's/$/\/pulls &/p'"

Voeg deze expression toe aan .zshrc of .bashrcs op hoofddirectory

Nadat u wilt gebruiken als

git-repo
git-pr

Other episodes