Ich bin im Verzeichnis A
. Wie führe ich aus git log
für das Git-Repository im Verzeichnis B
?
Verwenden Sie git “log” aus einem anderen Ordner
Aurelien B
rgngl
Aus, man git
:
Sie können dies mit dem tun --git-dir
Parameter, bevor irgendwelche Befehle übergeben werden.
git --git-dir /foo/bar/.git log
(Angabe der .git
Verzeichnis ist erforderlich.) Aus dem Dokumentation:
--git-dir=<path>
Legen Sie den Pfad zum Repository fest. Dies kann auch durch die Einstellung gesteuert werden
GIT_DIR
Umgebungsvariable. Es kann ein absoluter Pfad oder ein relativer Pfad zum aktuellen Arbeitsverzeichnis sein.
-
Sie müssen auf die verweisen
.git
Verzeichnis. Versuchengit --git-dir=/foo/bar/.git log
.– Mipadi
22. September 2010 um 18:29 Uhr
-
Entschuldigung, mein Fehler, Sie setzen das = nicht zwischen –git-dir und den Verzeichnisnamen. es wird also zu git –git-dir /foo/bar log
– rgngl
23. September 2010 um 6:39 Uhr
-
Warnung! Dieser Ansatz ist für andere Operationen als gebrochen
log
. Versuchengit --git-dir /foo/someclone/.git status
– Git wird total verwirrt. Ich empfehle-C
wie unten angegeben.– Luft
25. September 2014 um 22:25 Uhr
-
Ich bin noch nicht auf eine Git-Hilfeseite gestoßen, die die Zeichenfolge “–git-dir” enthält:'(
– dünner Soldat
31. März 2015 um 22:26 Uhr
-
@thinsoldat
man git
funktioniert auf meinem System (2.3.5). Aber die Antwort von @VonC funktioniert viel besser.– Kalimo
17. April 2015 um 12:25 Uhr
VonC
Mit git 1.8.5 (Q4 2013)haben Sie eine andere Wahl, anstatt einzustellen --git-dir
.
Wenn Sie ausführen möchten git log
im Ordner B
Typ:
git -C B log
So wie “
make -C <directory>
“, “git -C <directory> ...
” weist Git an, dorthin zu gehen, bevor er irgendetwas anderes tut.
Sehen Commit 44e1e4 durch Nazri Ramliy:
Es sind mehr Tastendrücke erforderlich, um den git-Befehl in einem anderen Verzeichnis aufzurufen, ohne das aktuelle Verzeichnis zu verlassen:
(cd ~/foo && git status)
git --git-dir=~/foo/.git --work-tree=~/foo status
GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status(cd ../..; git grep foo)
for d in d1 d2 d3; do (cd $d && git svn rebase); done
Die oben gezeigten Methoden sind für die Skripterstellung akzeptabel, aber für schnelle Befehlszeilenaufrufe zu umständlich.
Mit dieser neuen Option kann das obige mit weniger Tastenanschlägen erledigt werden:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
-
Dies ist ein viel zuverlässigerer Ansatz und funktioniert für andere Befehle als
log
.– Luft
25. September 2014 um 22:25 Uhr
-
Wow, und nichts in der Manpage! Schade. (ok, jetzt sehe ich, dass es in der 2.7-Manpage hinzugefügt wurde)
– Akostadinow
5. Februar 2016 um 9:34 Uhr
-
Leider ist das immer noch nicht ganz so schön wie das von Mercurial
-R
Option, da es relative Pfade durcheinander bringt. Zum Beispiel, wenn ich tippegit -C subdir log subdir/myfile
es gibt einen Fehler (da es nach der Datei suchtsubdir/subdir/myfile
).– jwd
20. März 2017 um 23:16 Uhr
-
@jwd: Ich bin mir nicht sicher, inwiefern das ein Problem ist? Was Sie zitiert haben, ist genau das Verhalten, das ich erwarten würde, und das ich nicht wollen würde
git
zu denken, es war klüger als ich und was ich tippte. Wenn ich sage „dies in Verzeichnis X ausführen“, meine ich nicht „außer manchmal etwas anderes tun“.– Unterstrich_d
27. Januar 2018 um 18:29 Uhr
-
@JacksonBlankenship
-c
wäre nicht richtig (es ist für die Einstellung der Konfiguration);-C
würde (es würde den Pfad ändern)– VonC
16. September 2021 um 20:41 Uhr
Alle möglichen Optionen:
-C <path>
: Führt den Befehl aus, als wäre Git gestartet worden<path>
.--git-dir=<path>
: Legt den Pfad zum „.git“-Verzeichnis fest.--work-tree=<path>
: Legt den Pfad zum Arbeitsbaum fest.
Normalerweise, -C
ist das, was die meisten Menschen wollen. Für andere Verwendungen sollten Sie die oben genannten kombinieren.
cd /other/dir && git log && cd -
in der Bash-Shell?– nimmthin
22. September 2010 um 12:39 Uhr
Mit git 1.8.5 (4. Quartal 2013) haben Sie eine andere Wahl, anstatt eine Einstellung vorzunehmen
--git-dir
: Siehe meine Antwort unten– VonC
21. November 2013 um 8:24 Uhr
Mögliches Duplikat von git pull, wenn es sich nicht in einem git-Verzeichnis befindet
– Code-Lehrling
30. Dezember 2016 um 21:27 Uhr
(cd ../other/dir && git log)
– Nur in runde Klammern eingeschlossen, führt dies eine neue Subshell aus, sodass Sie nach der Rückkehr am ursprünglichen Speicherort landen.– blutig
4. Dezember 2020 um 12:53 Uhr