tutorial - git remote




Wie kann ich die URL ermitteln, von der ein lokales Git-Repository ursprünglich geklont wurde? (13)

Um die IP-Adresse / den Hostnamen des origin abzurufen

Für ssh:// Repositorys:

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

Für git:// Repositories:

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

Ich habe vor ein paar Tagen ein Projekt von GitHub heruntergeladen. Ich habe seitdem herausgefunden, dass es mehrere Gabeln auf GitHub gibt, und ich habe nicht beachtet, welche ich ursprünglich genommen habe. Wie kann ich feststellen, welche der Gabeln ich gezogen habe?


Bei git remote show origin Sie sich im Projektverzeichnis befinden. Wenn Sie die URLs jedoch von einem anderen Ort aus ermitteln möchten, können Sie Folgendes verwenden:

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

Wenn Sie diesen Befehl häufig benötigen, können Sie in Ihrem .bashrc oder .bash_profile einen Alias ​​mit MacOS definieren.

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

Sie müssen also nur giturl im Git-Root-Ordner aufrufen, um die URL zu erhalten.

Wenn Sie diesen Alias ​​so erweitern

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

Sie erhalten nur die einfache URL ohne das Vorhergehende

"url ="

im

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

Sie erhalten mehr Möglichkeiten bei der Nutzung:

Beispiel

Auf einem Mac können Sie open $(giturl) , um die URL im Standardbrowser zu öffnen.

Oder chrome $(giturl) , um es mit dem Chrome-Browser unter Linux zu öffnen.


Die Git-URL befindet sich in der Git-Konfigurationsdatei. Der Wert entspricht der Schlüssel- url :

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

Du kannst es versuchen:

git remote -v

Es werden alle Abruf- / Push-URLs Ihrer Fernbedienungen gedruckt.


Ich denke, Sie können es unter .git/config und remote["origin"] wenn Sie das nicht manipuliert haben.


Ich kann mich nie an alle Parameter von Git-Befehlen erinnern, also ~/.gitconfig ich einfach einen Alias ​​in die Datei ~/.gitconfig , der für mich mehr Sinn macht, sodass ich mich daran erinnern kann und weniger Eingabe erfolgt:

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

Nach dem Neuladen des Terminals können Sie einfach Folgendes eingeben:

> git url

Hier sind noch ein paar meiner häufig verwendeten:

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

Kurze Antwort:

$ git remote show -n origin

oder eine Alternative zu reinen schnellen Skripten:

$ git config --get remote.origin.url

Einige Infos:

  1. $ git remote -v druckt alle Fernbedienungen (nicht das, was Sie möchten). Du willst die Herkunft richtig?
  2. $ git remote show origin viel besser, zeigt nur den origin , dauert jedoch zu lange (getestet mit git Version 1.8.1.msysgit.1).

Ich endete mit: $ git remote show -n origin , das scheint am schnellsten zu sein. Mit -n werden keine Remote-Köpfe (AKA-Zweige) abgerufen. Sie brauchen diese Art von Informationen nicht, oder?

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

Sie können sich bewerben | grep -i fetch | grep -i fetch alle drei Versionen auf, um nur die Abruf-URL anzuzeigen.

Wenn Sie reine Geschwindigkeit benötigen, verwenden Sie:

$ git config --get remote.origin.url

Danke an @Jefromi für den Hinweis.


Mit Git 2.7 (Release 5. Januar 2015) haben Sie mit git remote eine kohärentere Lösung:

git remote get-url origin

(schöner Anhänger von git remote set-url origin <newurl> )

Siehe Commit 96f78d3 (16. September 2015) von Ben Boeckel ( mathstuf ) .
(Zusammengeführt von Junio ​​C Hamano - gitster - in e437cbd , 05. Oktober 2015) :

remote: fügt den Unterbefehl get-url hinzu

insteadOf ist ein Teil von ls-remote --url und es gibt keine Möglichkeit, pushInsteadOf zu erweitern.
Fügen Sie einen get-url Unterbefehl hinzu, um sowohl abfragen zu können als auch um alle konfigurierten URLs abzurufen.

get-url:

Ruft die URLs für ein Remote ab.
Die Konfigurationen für insteadOf und pushInsteadOf werden hier erweitert.
Standardmäßig wird nur die erste URL aufgelistet.

  • Mit ' --push ' werden Push-URLs abgefragt, anstatt URLs abzurufen.
  • Mit ' --all ' werden alle URLs für die Remote- --all aufgelistet.

Vor git 2.7 hatten Sie:

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

Um die anderen Antworten zu ergänzen: Wenn die Fernbedienung aus irgendeinem Grund geändert wurde und somit nicht den ursprünglichen Ursprung widerspiegelt, sollte der allererste Eintrag im reflog (dh der letzte im Befehl git reflog angezeigte git reflog ) angeben, wo sich das Repo befand ursprünglich aus geklont.

z.B

$ git reflog | tail -n 1
f34be46 [email protected]{0}: clone: from https://github.com/git/git
$

(Denken Sie daran, dass der Reflog möglicherweise gereinigt wird, so dass dies nicht garantiert funktioniert.)


Wenn Sie den Namen des Upstream-Remote-Standorts für einen Zweig nicht kennen, können Sie das zuerst nachschlagen, indem Sie den Namen des Upstream-Zweigs prüfen, auf dem der aktuelle Zweig aufgebaut wurde. Verwenden Sie git rev-parse wie git rev-parse :

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

Dies zeigt, dass der Upstream-Zweig die Quelle für den aktuellen Zweig war. Dies kann analysiert werden, um den Fernnamen wie folgt zu erhalten:

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

Nehmen Sie das jetzt und leiten Sie es an git ls-remote und Sie erhalten die URL der Upstream-Fernbedienung, die die Quelle des aktuellen Zweigs ist:

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

Nun sollte beachtet werden, dass dies nicht unbedingt mit dem Quell-Remote-Repository identisch ist, aus dem geklont wurde. In vielen Fällen reicht es jedoch aus.


Wenn Sie nur die Remote-URL verwenden möchten oder die referentielle Integrität beschädigt wurde:

git config --get remote.origin.url

Wenn Sie eine vollständige Ausgabe benötigen oder die referentielle Integrität intakt ist:

git remote show origin

Wenn Sie git clone (von GitHub oder einem beliebigen Quell-Repository für diese Angelegenheit) verwenden, lautet der Standardname für die Quelle des Klons "origin". Wenn Sie git remote show werden die Informationen zu diesem Namen angezeigt. Die ersten Zeilen sollten zeigen:

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:

Wenn Sie den Wert im Skript verwenden möchten, verwenden Sie den ersten in dieser Antwort aufgeführten Befehl.


Willkürlich benannte Remote-Hol-URLs drucken:

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

#!/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" == [email protected]* ]] \
 && { url="https://github.com/${url##*:}" >&2; }; \
 { url="${url%%.git}" >&2; };

 printf "%s\n" "$url"
}

Verwendungszweck:

# 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

Ausgabe:

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






git-remote