1014 Stimmen

Gibt es eine Möglichkeit, das git Root-Verzeichnis mit einem einzigen Befehl zu erhalten?

Mercurial hat eine Möglichkeit, das Root-Verzeichnis (das .hg enthält) über

hg root

Gibt es etwas Äquivalentes in Git, um das Verzeichnis zu erhalten, das das .git-Verzeichnis enthält?

1671voto

baudtack Punkte 26516

Ja:

git rev-parse --show-toplevel

Wenn Sie den Mercurial-Befehl direkter replizieren möchten, können Sie ein alias :

git config --global alias.root 'rev-parse --show-toplevel'

und jetzt git root wird genauso funktionieren wie hg root .


Hinweis : In einem Submodul zeigt dies das Root-Verzeichnis des Submodul y no das übergeordnete Repository. Wenn Sie Git >=2.13 oder höher verwenden, gibt es eine Möglichkeit, die Untermodule können das Root-Verzeichnis des Superprojekts anzeigen. Wenn Ihr Git älter ist als das, siehe diese andere Antwort.

119voto

marc.guenther Punkte 2373

Hat --show-toplevel wurde erst kürzlich in die git rev-parse oder warum erwähnt es niemand?

Von der git rev-parse man-Seite:

   --show-toplevel
       Show the absolute path of the top-level directory.

109voto

Scott Lindsay Punkte 1255

Le site man Seite für git-config (unter Alias ) sagt:

Wenn der Alias-Erweiterung ein Ausrufezeichen vorangestellt ist, wird sie wie eine Shell behandelt Befehl behandelt. [...] Beachten Sie, dass Shell Befehle aus dem obersten Verzeichnis eines Repositorys ausgeführt werden, das nicht unbedingt nicht unbedingt das aktuelle Verzeichnis ist.

Unter UNIX können Sie das also tun:

git config --global --add alias.root '!pwd'

99voto

VonC Punkte 1117238

Wie wäre es mit " git rev-parse --git-dir " ?

F:\prog\git\test\copyMerge\dirWithConflicts>git rev-parse --git-dir
F:/prog/git/test/copyMerge/.git

Le site --git-dir Option scheint zu funktionieren.

De git rev-parse Handbuchseite :

--git-dir

    Show $GIT_DIR if defined else show the path to the .git directory.

Sie können es in Aktion sehen in diesem git setup-sh Skript .

Wenn Sie sich in einem Submodulordner befinden, mit Git >=2.13 verwenden :

git rev-parse --show-superproject-working-tree

Wenn Sie Folgendes verwenden git rev-parse --show-toplevel , Stellen Sie sicher, dass es mit Git 2.25+ (Q1 2020) ist. .

54voto

nonopolarity Punkte 138211

Um hier eine einfache Antwort zu schreiben, so dass wir Folgendes verwenden können

git root

um die Arbeit zu erledigen, konfigurieren Sie einfach Ihr Git, indem Sie

git config --global alias.root "rev-parse --show-toplevel"

und fügen Sie dann Folgendes zu Ihrer ~/.bashrc :

alias cdroot='cd $(git root)'

so dass Sie einfach cdroot um an den Anfang Ihres Repo zu gelangen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X