Verwenden Sie git “log” aus einem anderen Ordner

Lesezeit: 4 Minuten

Benutzer-Avatar
Aurelien B

Ich bin im Verzeichnis A. Wie führe ich aus git log für das Git-Repository im Verzeichnis B?

  • 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


Benutzer-Avatar
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. Versuchen git --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. Versuchen git --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

Benutzer-Avatar
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 BTyp:

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:

  1. (cd ~/foo && git status)
    git --git-dir=~/foo/.git --work-tree=~/foo status
    GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status
  2. (cd ../..; git grep foo)
  3. 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:

  1. git -C ~/foo status
  2. git -C ../.. grep foo
  3. 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 tippe git -C subdir log subdir/myfile es gibt einen Fehler (da es nach der Datei sucht subdir/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:

Normalerweise, -C ist das, was die meisten Menschen wollen. Für andere Verwendungen sollten Sie die oben genannten kombinieren.

1017590cookie-checkVerwenden Sie git “log” aus einem anderen Ordner

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy