Ermitteln des Namens des ursprünglichen Repositorys, aus dem Sie in Git geklont haben

Antworten:

91

Im Repository-Stammverzeichnis enthält die .git/configDatei 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 -vden 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.

allait
quelle
16
Sie können auch git remote show originviel mehr Informationen zu dieser Fernbedienung anzeigen.
Cascabel
1
Sieht so aus, als wären diese beiden Methoden in der Antwort gleichwertig - es scheint git remote -vnur Lesen und Schreiben .git/config.
flow2k
103
git config --get remote.origin.url
Straff
quelle
2
Einverstanden; Dies ist am besten, da keine Verbindung / Authentifizierung zum Git-Remote-Server erforderlich ist. OP fragte "Verwenden Ihres lokalen Repositorys", git remote show originruft jedoch das Netzwerk an.
Travis Wilson
1
Dies ist in einen Basisnamen eingeschlossen, da die Antwort von Casey gut funktioniert
Jonathan Drapeau
29

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 -nOption macht den Befehl viel schneller.

Casey
quelle
11

Ich benutze das:

basename $(git remote get-url origin) .git

Welches gibt so etwas zurück gitRepo. (Entfernen Sie das .gitam Ende des Befehls, um so etwas zurückzugeben gitRepo.git.)

(Hinweis: Es erfordert Git Version 2.7.0 oder höher)

Adzenith
quelle
2

Ich bin über diese Frage gestolpert und habe versucht, den organization/repoString 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 configBefehls nur durch den Organisations- und Reponamen zu ersetzen .

So etwas github/scientistwürde von der Zeichenklasse [[:graph:]]im regulären Ausdruck abgeglichen .

Das \1sagt sed, alles durch nur die übereinstimmenden Zeichen zu ersetzen.

jhnstn
quelle
Tippfehler am Ende sagt .get statt .git ---- git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
MSillence
Danke @MSillence, behoben.
2.
0
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: [email protected]: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'
haolun
quelle
1
Erklären Sie, was Sie getan haben, wie
Maher,
Fügen Sie möglicherweise weitere Informationen hinzu, z. B. über die Ruby-Abhängigkeit und auf welcher Plattform dies getestet wurde (einschließlich Versionsinformationen).
Peter Mortensen
0

Dies wird funktionieren, um den Wert zu erhalten.

#!/usr/bin/env bash
repoSlug="$(git config --get remote.origin.url | cut -d/ -f5 | cut -d. -f1)"
echo ${repoSlug}
Joehep
quelle