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?
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
verwenden, 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.
Wenn Sie dies für Skriptzwecke wünschen, können Sie nur die URL mit angeben
git config --get remote.Origin.url
Du kannst es versuchen:
git remote -v
Es werden alle Abruf-/Push-URLs Ihrer Fernbedienungen gedruckt.
Um die Antwort zu erhalten:
git ls-remote --get-url [REMOTE]
Dies ist besser als das Lesen der Konfiguration. beziehen Sie sich auf die man-Seite für git-ls-remote
:
--get-url
Erweitern Sie die URL des angegebenen Remote-Repositorys unter Berücksichtigung von Beliebige
"url.<base>.insteadOf"
config-Einstellung (Siehegit-config(1)
) und Beenden, ohne mit der Fernbedienung zu sprechen.
Wie von @Jefromi ausgeführt, wurde diese Option in v1.7.5 hinzugefügt und erst in v1.7.12.2 (2012-09) dokumentiert.
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 Sep 2015) von Ben Boeckel (mathstuf
) .
(Zusammengeführt von Junio C Hamano - gitster
- in commit e437cbd , 05 Oct 2015):
remote: fügt den Unterbefehl get-url hinzu
Das Erweitern von
insteadOf
ist ein Teil vonls-remote --url
und es gibt keine Möglichkeit um auchpushInsteadOf
zu erweitern.
Fügen Sie einenget-url
-Unterbefehl hinzu, um beide abzufragen und alle konfigurierten URLs abzurufen.
get-url:
Ruft die URLs für ein Remote ab.
Konfigurationen fürinsteadOf
undpushInsteadOf
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 das Remote aufgelistet.
Vor git 2.7 hatten Sie:
git config --get remote.[REMOTE].url
git ls-remote --get-url [REMOTE]
git remote show [REMOTE]
Zusammenfassend gibt es mindestens vier Möglichkeiten:
(Folgendes wurde für das offizielle Linux-Repository versucht.)
Wenigste Information:
$ git config --get remote.Origin.url
https://github.com/torvalds/linux.git
und
$ git ls-remote --get-url
https://github.com/torvalds/linux.git
Mehr Informationen:
$ git remote -v
Origin https://github.com/torvalds/linux.git (fetch)
Origin https://github.com/torvalds/linux.git (Push)
Noch mehr Informationen:
$ 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)
Kurze Antwort:
$ git remote show -n Origin
oder eine Alternative für reine Schnellskripte:
$ git config --get remote.Origin.url
Einige Infos:
$ git remote -v
druckt alle Fernbedienungen (nicht was Sie möchten). Sie wollen Origin richtig?$ git remote show Origin
viel besser, zeigt nur Origin
, dauert aber 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 | grep -i fetch
auf alle drei Versionen anwenden, 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.
Ich denke, Sie können es unter .git/config
und remote["Origin"]
finden, wenn Sie das nicht manipuliert haben.
Die Git-URL befindet sich in der Git-Konfigurationsdatei. Der Wert entspricht dem Schlüssel url
:
cd project_dir
cat .git/config | grep url | awk '{print $3}'
Hinweis: Dies funktioniert auch, wenn Sie offline sind oder der Remote-Git-Server heruntergefahren wurde.
Die Fernbedienung des Upstreams wird möglicherweise nicht als "Origin" bezeichnet. Hier eine Variation:
remote=$(git config --get branch.master.remote)
url=$(git config --get remote.$remote.url)
basename=$(basename "$url" .git)
echo $basename
Oder:
basename $(git config --get remote.$(git config --get branch.master.remote).url) .git
Für weitere nützliche Variablen gibt es:
$ git config -l
Ich kann mich nie an alle Parameter von Git-Befehlen erinnern, also füge ich einfach einen Aliasnamen in die ~/.gitconfig
-Datei ein, der für mich mehr Sinn macht, also kann ich mich daran erinnern, und das führt zu weniger Schreibarbeit:
[alias]
url = ls-remote --get-url
Nachdem Sie das Terminal neu geladen haben, 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
Origin
zu erhaltenFür ssh://
-Repositorys:
git ls-remote --get-url Origin | cut -f 2 -d @ | cut -f 1 -d "/"
Für git://
-Repositorys:
git ls-remote --get-url Origin | cut -f 2 -d @ | cut -f 1 -d ":"
Ich verwende grundsätzlich:
git remote get-url Origin
Es funktioniert für die Git Bash-Befehlskonsole oder die CMD-Befehlskonsole in Windows. Das heißt, es funktioniert mit Version 2.x von Git.
Mit git remote show Origin
müssen 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 einen Alias in Ihrem .bashrc
oder .bash_profile
mit MacOS definieren.
alias giturl='cat ./.git/config | grep url'
Sie müssen also nur giturl
im Git-Root-Ordner aufrufen, um einfach dessen 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
sie erhalten mehr Möglichkeiten bei der Nutzung:
Beispiel
Auf dem Mac können Sie open $(giturl)
aufrufen, um die URL im Standardbrowser zu öffnen.
Oder chrome $(giturl)
, um es mit dem Chrome-Browser unter Linux zu öffnen.
Um die anderen Antworten zu ergänzen: Wenn die Fernbedienung aus irgendeinem Grund geändert wurde und somit nicht das Original Origin widerspiegelt, sollte der allererste Eintrag im Reflog (dh der letzte mit dem Befehl git reflog
angezeigte Eintrag) angeben, wo Das Repo wurde 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.)
Eine einfache Möglichkeit ist das Öffnen der .git/config
-Datei:
cat .git/config
Bearbeiten:
vim .git/config
oder
nano .git/config
Willkürlich benannte Remote-Hol-URLs drucken:
git remote -v | grep fetch | awk '{print $2}'
Wenn Sie den Namen des Upstream-Remote-Standorts für einen Zweig nicht kennen, können Sie zunächst nachschlagen, indem Sie den Namen des Upstream-Zweigs prüfen, auf dem der aktuelle Zweig basiert. Verwenden Sie git rev-parse
wie folgt:
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 des Upstream-Remote, der 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.
#!/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
Für mich ist das der einfachere Weg (weniger Tippen):
$ git remote -v
Origin https://github.com/torvalds/linux.git (fetch)
Origin https://github.com/torvalds/linux.git (Push)
eigentlich habe ich das in eine alias
namens s
, die das tut:
git remote -v
git status
Sie können Ihrem Profil Folgendes hinzufügen: alias s='git remote -v && git status'
git config --list
Dieser Befehl enthält alle Informationen zu Ihrem Repository.