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?
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?
Dieser Shell-Alias funktioniert, egal ob Sie sich in einem Git-Unterverzeichnis oder auf der obersten Ebene befinden:
alias gr='[ ! -z `git rev-parse --show-toplevel` ] && cd `git rev-parse --show-toplevel || pwd`'
aktualisiert, um eine moderne Syntax anstelle von Backticks zu verwenden:
alias gr='[ ! -z $(git rev-parse --show-toplevel) ] && cd $(git rev-parse --show-toplevel || pwd)'
Hier ist ein Skript, das ich geschrieben habe und das beide Fälle behandelt: 1) Repository mit Arbeitsbereich, 2) Repository ohne Arbeitsbereich.
https://gist.github.com/jdsumsion/6282953
git-root
(ausführbare Datei in Ihrem Pfad):
#!/bin/bash
GIT_DIR=`git rev-parse --git-dir` &&
(
if [ `basename $GIT_DIR` = ".git" ]; then
# handle normal git repos (with a .git dir)
cd $GIT_DIR/..
else
# handle bare git repos (the repo IS a xxx.git dir)
cd $GIT_DIR
fi
pwd
)
Wir hoffen, dass dies hilfreich ist.
Wenn Sie ein Shell-Framework verwenden, ist möglicherweise bereits ein Shell-Alias vorhanden:
$ grt
en oh-my-zsh (68k) ( cd $(git rev-parse --show-toplevel || echo ".")
)$ git-root
en prezto (8.8k) (zeigt den Pfad zum Arbeitsbaum Root an)$ g..
zimfw (1k) (wechselt das aktuelle Verzeichnis auf die oberste Ebene des Arbeitsbaums).Ich möchte auf den ausgezeichneten Kommentar von Daniel Brockman eingehen.
Definition von git config --global alias.exec '!exec '
ermöglicht es Ihnen, Dinge zu tun wie git exec make
weil, wie man git-config
Staaten:
Wenn der Alias-Erweiterung ein Ausrufezeichen vorangestellt ist, wird sie wie ein Shell-Befehl behandelt. [Beachten Sie, dass Shell-Befehle aus dem obersten Verzeichnis eines Repositorys ausgeführt werden, das nicht unbedingt das aktuelle Verzeichnis sein muss.
Es ist auch praktisch zu wissen, dass $GIT_PREFIX
ist der Pfad zum aktuellen Verzeichnis relativ zum obersten Verzeichnis eines Repositorys. Aber das Wissen darüber ist nur die halbe Miete™. Die Shell-Variablenexpansion macht die Verwendung ziemlich schwierig. Ich schlage daher vor bash -c
etwa so:
git exec bash -c 'ls -l $GIT_PREFIX'
andere Befehle umfassen:
git exec pwd
git exec make
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.