Wie bekommt man das Git-repository name in einigen Git-repository?
Ist, wenn Sie in einige Git-Verzeichnis, wie kann man das Git-repository-Namen in einige Git-repository? 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
- Es sieht aus wie das, was Sie nach. stackoverflow.com/questions/4076239/...
- Nein, das ist wahrscheinlich nicht das, was er will. Dies könnte sein, wenn: stackoverflow.com/questions/957928/...
- wenn Sie node.js Sie könnten versuchen, npmjs.com/package/git-repo-name
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, wenn es für den repository-Namen, Sie bedeuten, dass die Git-root-Verzeichnis-Namen (die eine, die enthält .git-Verzeichnis), können Sie dies ausführen:
Den
git rev-parse --show-toplevel
Teil gibt man den Pfad zu diesem Verzeichnis undbasename
Streifen der erste Teil des Pfades..git
Unterverzeichnis, so ist es nicht wahr, dass "wenn Sie für den repository-Namen, Sie bedeuten, dass die git-root-Verzeichnis-name".sed -n '1 p' test.ip | basename
basenamegit rev-parse --show-toplevel
`:/var/www" ?? Wie Sie wahrscheinlich sehen, diese Linie wird nicht funktionieren, weil der mit ` inside `git --git-dir=<some git repo>/.git rev-parse --show-toplevel
und es Ihnen zurück /var/www/htmlbasename "`git rev-parse --show-toplevel`"
Im Allgemeinen, Sie können das nicht tun. Git kümmert sich nicht, wie Ihr git-repository benannt ist. Zum Beispiel, können Sie Sie umbenennen das Verzeichnis mit Ihrer repository (einer mit
.git
Unterverzeichnis), und git es gar nicht bemerkt - alles wird weiterhin funktionieren.Jedoch, wenn Sie geklont haben, können Sie mit Befehl:
zur Anzeige einer Vielzahl von Informationen über die original-Fernbedienung, die Sie geklonten repository aus, und er enthält original-clone-URL.
Wenn Sie jedoch entfernt link zur original Fernbedienung mit
git remote rm origin
oder wenn Sie das repository mithilfegit init
solche Informationen nicht einfach zu erhalten - Sie existiert nicht überall.git branch
🙂 (der aktive Zweig wird markiert mit Stern*
).Es gibt keine Notwendigkeit, eine Verbindung zum repository her, um den Namen, und der name des Ordners wird nicht unbedingt die remote name.
Ich habe festgestellt, dass dies die Genaueste und effiziente Möglichkeit zu Holen Sie sich die aktuellen repository-name:
Sollte diese Arbeit als Git 1.8.1.5. Vor dieser, die jetzt veraltet
git-repo-config
Befehl funktioniert hätte (so früh wie Git 1.7.5).Andere Antworten immer noch nicht funktionieren, wenn der name des Verzeichnisses entspricht nicht der remote-repository-Namen (und es könnte).
Sie können die real Namen des Repositorys mit so etwas wie dies:
git remote show origin -n | grep "Fetch URL:" | sed -E "s#^.*/(.*)$#\1#" | sed "s#.git$##"
Grundsätzlich, rufen Sie
git remote show origin
nehmen Sie die repository-URL von "Fetch URL:" - Feld, und " regex es um den Teil mit dem Namen:https://github.com/dragn/neat-vimrc.git
git remote show origin -n
zu verhindern..git
mit einem anderen Aufrufsed
habe ich aktualisiert, der code in der Antwort. Auf diese Weise wird es funktionieren, wenn die URL endet nicht mit.git
.ack
. Vermeidet mehreregrep
undsed
Anrufe, und es funktioniert auf meinem osx mitzsh
wosed -E
funktioniert nicht wie erwartet. Auch setzt die Anforderungen in einem einzigen regex-string, anstatt sich über ein paar. Verwendet benannte captures Gruppen(?<name>...)
, non-greedy matching,.*?
, und optionalen, dazu passenden,(?:\.git|$)
. Hier ist es:git remote show origin -n | ack -m1 --match "\bFetch URL:.*\/(?<repo_name>.*?)(?:\.git|$)" --output "$+{repo_name}"
sed
besser funktioniert auf meinem Mac OSX:git remote show origin -n | grep h.URL | sed 's/.*://;s/.git$//'
origin
. Oder, Sie können mehrere Fernbedienungen, und jeder kann Sie nennen es anders. In git, repository-Namen (oder das Verzeichnis name es enthalten ist) wird nicht explizit verfolgt.git --git-dir=<git repo>/.git remote show origin -n | grep "Fetch URL:" | sed -E "s/^.*\/(.*)$/\1/" | sed "s/.git$//"
Für mich gearbeitet. @MarkHu war am nächstengit remote show origin -n | grep "Fetch URL:" | sed -E 's#^.*/(.*)$#\1#' | sed 's#.git$##'
In git v2.7.0+, einen Unterbefehl
get-url
wurde eingeführt, umgit-remote
Befehl.POSIX-shell:
PowerShell:
Ich denke, das ist ein besserer Weg, um eindeutig zu identifizieren und ein Klon von einem repository.
git config --get remote.origin.url
und überprüfung, um sicherzustellen, dass die Herkunft entsprichtssh://your/repo
.Ein bisschen spät für diese Frage, aber wenn Sie:
Sehen Sie die url des repository, die den reponame:
Hier ist eine bash-Funktion, die das drucken wird dem repository-Namen (wenn es richtig aufgesetzt wurde):
Erklärung:
Diese führt
git rev-parse --git-dir
, die druckt den vollständigen Pfad zu der.git
Verzeichnis der currrent-repository. Es speichert den Pfad in$gitdir
.Diese führt
cat ${gitdir}/description
, die druckt den Inhalt des.git/description
Ihre aktuelle repository. Wenn Sie schon richtig benannt repository gibt es einen Namen. Ansonsten, es wird gedrucktUnnamed repository; edit this file 'description' to name the repository.
Wenn die repo war richtig benannt, dann drucken Sie den Inhalt.
Ansonsten...
Dem Benutzer mitteilen, dass die repo war Unbenannt.
Etwas ähnliches umgesetzt in dieses Skript.
Leider, es scheint, dass Git hat keinen solchen Befehl eingebaut. Aber Sie können einfach fügen Sie es Sie sich mit Git aliases und einigen shell-Magie.
Wie bereits von diese Antwort, die Sie verwenden können
git rev-parse --show-toplevel
zu zeigen, die Wurzel Ihrer aktuellen Git-Ordner.Wenn Sie möchten, verwenden Sie diese regelmäßig, ist es wahrscheinlich bequemer, es zu definieren, wie ein alias. Für diese, verwendet
git config alias.root '!echo "$(git rev-parse --show-toplevel)"'
. Nach dieser, können Siegit root
zu sehen, die root-Ordner der repository-Sie sind derzeit in.Wenn Sie möchten, um ein anderes subkommando-Namen als
root
, ersetzen Sie einfach den zweiten Teilalias.root
im obigen Befehl mit, was Sie wollen.Details Aliase Git, siehe auch die
git config
man-page.git config --add alias.root 'rev-parse --show-toplevel'
-- es gibt keine Notwendigkeit zu werfen, die in der shell für einen single-Befehl alias.Wenn Sie wollen, dass die ganze GitHub-repository-Namen ("vollständiger name") Benutzer/repository, und Sie wollen, es zu tun mit Ruby...
Dieser Ansatz mit
git-remote
gut für mich gearbeitet für HTTPS-Fernbedienungen:Beispiel
Hier ist meins:
nicht besser als die anderen, aber ich habe es geschafft eine bash-Funktion, so kann ich drop in die remote-Namen, wenn es nicht origin.
Auch ich nur feststellen, dass es einige repo-Informationen in
.git
- Verzeichnis. So können Sie einfach sehenFETCH_HEAD
Datei im terminal zu sehen, repo-name:Beispiel:
Ausgabe:
Sowie
https://bitbucket.org/somebituser/some_repo.git
ist der name der repository -Können Sie verwenden:
git remote -v
Dokumentation:
https://git-scm.com/docs/git-remote
git remote -v
ist gerade zurück von einer oder mehreren URLs. Wie ist diese Beantwortung der Frage?