Wie können Sie den Git-Repository-Namen in einem Git-Repository abrufen, wenn Sie in einem Git-Verzeichnis arbeiten? Gibt es Git-Befehle?
# I did check out bar repository and working in somewhere
# under bar directory at this moment such as below.
$ git clone git://github.com/foo/bar.git
$ cd bar/baz/qux/quux/corge/grault # and I am working in here!
$ git xxx # <- ???
bar
git
repository
gipcompany
quelle
quelle
Antworten:
Wenn Sie für den Repository-Namen den Git-Stammverzeichnisnamen (den Namen, der das .git-Verzeichnis enthält) meinen, können Sie Folgendes ausführen:
Der
git rev-parse --show-toplevel
Teil gibt Ihnen den Pfad zu diesem Verzeichnis und entferntbasename
den ersten Teil des Pfads.quelle
.git
Unterverzeichnis enthält. Es ist also nicht wahr, dass "wenn Sie für den Repository-Namen den Namen des Git-Stammverzeichnisses meinen".sed -n '1 p' test.ip | basename
basename`git rev-parse --show-toplevel
: / var / www "?? Wie Sie wahrscheinlich sehen, wird diese Zeile nicht funktionieren, da "inside" verwendet wirdgit --git-dir=<some git repo>/.git rev-parse --show-toplevel
und es gibt Ihnen zurück / var / www / htmlIm Allgemeinen können Sie dies nicht tun. Git ist es egal, wie Ihr Git-Repository benannt ist. Sie können beispielsweise das Verzeichnis umbenennen, das Ihr Repository enthält (eines mit
.git
Unterverzeichnis), und git wird es nicht einmal bemerken - alles wird weiterhin funktionieren.Wenn Sie es jedoch geklont haben, können Sie den folgenden Befehl verwenden:
um viele Informationen über die ursprüngliche Fernbedienung anzuzeigen, von der Sie Ihr Repository geklont haben, und die die ursprüngliche Klon-URL enthält.
Wenn Sie jedoch den Link zur ursprünglichen Remote-Verwendung entfernt
git remote rm origin
haben oder wenn Sie dieses Repository mit erstellt habengit init
, ist es einfach unmöglich, solche Informationen abzurufen - sie sind nirgendwo vorhanden.quelle
git branch
:) (aktiver Zweig wird mit einem Stern markiert*
).Sie müssen sich nicht an das Repository wenden, um den Namen zu erhalten, und der Ordnername spiegelt nicht unbedingt den Remote-Namen wider.
Ich habe festgestellt, dass dies der genaueste und effizienteste Weg ist, um den aktuellen Repository-Namen zu erhalten:
Dies sollte ab Git 1.8.1.5 funktionieren. Zuvor hätte der jetzt veraltete
git-repo-config
Befehl funktioniert (bereits in Git 1.7.5).quelle
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
In git v2.7.0 + wurde ein Unterbefehl
get-url
zumgit-remote
Befehl eingeführt.POSIX-Shell:
Power Shell:
quelle
.git
am Ende meines Strings mit dieser Methode, also habe ich einen Split hinzugefügt, um es zu entfernen:(git remote get-url origin | Split-Path -leaf).split('.')[0]
trim()
:def repo = powershell(returnStdout: true, script: "(git remote get-url origin | Split-Path -leaf).split('.')[0]" ).trim()
Andere Antworten funktionieren immer noch nicht, wenn der Name Ihres Verzeichnisses nicht dem Namen des Remote-Repositorys entspricht (und dies könnte sein). Sie können den richtigen Namen des Repositorys folgendermaßen ermitteln:
git remote show origin -n | grep "Fetch URL:" | sed -E "s#^.*/(.*)$#\1#" | sed "s#.git$##"
Grundsätzlich Sie rufen
git remote show origin
, nehmen Sie die Repository - URL von „URL - Abruf:“ Feld und regex es den Teil mit dem Namen zu erhalten: https://github.com/dragn/ ordentlich-vimrc .gitquelle
git remote show origin -n
zu verhindern..git
mit einem anderen Anruf zu entfernen. Ichsed
habe den Code in der Antwort aktualisiert. Auf diese Weise funktioniert es, wenn die URL nicht mit endet.git
.sed
funktionierte besser auf meinem Mac OSX:git remote show origin -n | grep h.URL | sed 's/.*://;s/.git$//'
Wenn Sie versuchen, den Benutzernamen oder den Organisationsnamen UND den Projekt- oder Reponamen auf github abzurufen, konnte ich diesen Befehl schreiben, der zumindest lokal für mich funktioniert.
Dies ist das gewünschte Ergebnis, ebenso
Vydia
wie der Organisationsname undgourami
der Paketname. Zusammen können sie helfen, den vollständigenUser/Repo
Pfad zu bildenquelle
Ich denke, dies ist ein besserer Weg, um einen Klon eines Repositorys eindeutig zu identifizieren .
git config --get remote.origin.url
und überprüfen, ob der Ursprung übereinstimmtssh://your/repo
.quelle
Ein bisschen spät für diese Frage, aber wenn Sie:
Sie sehen die URL des Repositorys, die den Reponamen enthält:
quelle
Repo vollständiger Name:
quelle
Dieser Ansatz
git-remote
hat bei HTTPS-Fernbedienungen gut funktioniert:Beispiel
quelle
Hier ist eine Bash-Funktion, die den Repository-Namen druckt (wenn er ordnungsgemäß eingerichtet wurde):
Erläuterung:
Dies wird ausgeführt
git rev-parse --git-dir
, wodurch der vollständige Pfad zum.git
Verzeichnis des aktuellen Repositorys gedruckt wird. Es speichert den Pfad in$gitdir
.Dies wird ausgeführt
cat ${gitdir}/description
, wodurch der Inhalt des.git/description
aktuellen Repositorys gedruckt wird . Wenn Sie Ihr Repository ordnungsgemäß benannt haben, wird ein Name gedruckt. Andernfalls wird es gedrucktUnnamed repository; edit this file 'description' to name the repository.
Wenn das Repo richtig benannt wurde, drucken Sie den Inhalt.
Andernfalls...
Teilen Sie dem Benutzer mit, dass das Repo nicht benannt wurde.
Ähnliches ist in diesem Skript implementiert .
quelle
Leider scheint Git keinen solchen Befehl eingebaut zu haben. Sie können ihn jedoch ganz einfach selbst mit Git-Aliasen und etwas Shell-Magie hinzufügen.
Wie in dieser Antwort hervorgehoben , können Sie
git rev-parse --show-toplevel
das Stammverzeichnis Ihres aktuellen Git-Ordners anzeigen.Wenn Sie dies regelmäßig verwenden möchten, ist es wahrscheinlich bequemer, es als Alias zu definieren. Dafür verwendet
git config alias.root '!echo "$(git rev-parse --show-toplevel)"'
. Danach können Siegit root
den Stammordner des Repositorys anzeigen, in dem Sie sich gerade befinden.Wenn Sie einen anderen Unterbefehlsnamen als verwenden möchten
root
, ersetzen Sie einfach den zweiten Teil desalias.root
obigen Befehls durch den gewünschten.Einzelheiten zu Aliasnamen in Git finden Sie auch in der
git config
Manpage .quelle
git config --add alias.root 'rev-parse --show-toplevel'
- Es ist nicht erforderlich, die Shell für einen Alias mit einem Befehl zu verwenden.Wenn Sie den gesamten GitHub-Repository-Namen ('vollständiger Name') - Benutzer / Repository - möchten und dies mit Ruby tun möchten ...
quelle
Hier ist meins:
nicht besser als die anderen, aber ich habe es zu einer Bash-Funktion gemacht, damit ich den Remote-Namen eingeben kann, wenn er nicht ursprünglich ist.
quelle
Außerdem finde ich nur, dass es einige Repo-Informationen im
.git
Verzeichnis gibt. Sie können also einfach dieFETCH_HEAD
Datei im Terminal ansehen , um den Namen des Repos zu sehen:Beispiel:
Ausgabe:
Und
https://bitbucket.org/somebituser/some_repo.git
ist der Name Ihres Repositorysquelle
Dieser funktioniert ziemlich gut mit Git-2.18.2 und kann von außerhalb des Git-Ziel-Repositorys gestartet werden:
basename -s .git $(git --git-dir=/<project-path>/.git remote get-url origin)
quelle
Sie können verwenden: git remote -v
Dokumentation: https://git-scm.com/docs/git-remote
quelle
git remote -v
gibt nur eine oder mehrere URLs zurück. Wie beantwortet dies die Frage?