Wenn Sie Ihren ersten Klon mit der Syntax durchführen
git clone username@server:gitRepo.git
Ist es möglich, mithilfe Ihres lokalen Repositorys den Namen dieses ersten Klons zu ermitteln?
(Finden Sie also im obigen Beispiel gitRepo.git
.)
Wenn Sie Ihren ersten Klon mit der Syntax durchführen
git clone username@server:gitRepo.git
Ist es möglich, mithilfe Ihres lokalen Repositorys den Namen dieses ersten Klons zu ermitteln?
(Finden Sie also im obigen Beispiel gitRepo.git
.)
Antworten:
Im Repository-Stammverzeichnis enthält die .git/config
Datei alle Informationen zu Remote-Repositorys und -Zweigen. In Ihrem Beispiel sollten Sie nach etwas suchen wie:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = server:gitRepo.git
Außerdem zeigt der Git-Befehl git remote -v
den Namen und die URL des Remote-Repositorys an. Das Remote-Repository "origin" entspricht normalerweise dem ursprünglichen Repository, aus dem die lokale Kopie geklont wurde.
git remote show origin
viel mehr Informationen zu dieser Fernbedienung anzeigen.
git remote -v
nur Lesen und Schreiben .git/config
.
git config --get remote.origin.url
git remote show origin
ruft jedoch das Netzwerk an.
Dies ist ein schneller Bash-Befehl, nach dem Sie wahrscheinlich suchen. Er gibt nur einen Basisnamen des Remote-Repositorys aus:
Wo Sie holen aus :
basename $(git remote show -n origin | grep Fetch | cut -d: -f2-)
Alternativ, wo Sie drücken zu :
basename $(git remote show -n origin | grep Push | cut -d: -f2-)
Insbesondere die -n
Option macht den Befehl viel schneller.
Ich bin über diese Frage gestolpert und habe versucht, den organization/repo
String von einem Git-Host wie Github oder Gitlab zu bekommen.
Das funktioniert bei mir:
git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
Es wird verwendet sed
, um die Ausgabe des git config
Befehls nur durch den Organisations- und Reponamen zu ersetzen .
So etwas github/scientist
würde von der Zeichenklasse [[:graph:]]
im regulären Ausdruck abgeglichen .
Das \1
sagt sed, alles durch nur die übereinstimmenden Zeichen zu ersetzen.
git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
git remote show origin -n | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
Es wurde mit drei verschiedenen URL-Stilen getestet:
echo "Fetch URL: http://user@pass:gitservice.org:20080/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: Fetch URL: git@github.com:home1-oss/oss-build.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: https://github.com/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'