git mit –git-dir= ergibt ‘kein Git-Repository’

Lesezeit: 3 Minuten

Benutzer-Avatar
Michael Ochs

Ich habe ein Skript in einer meiner iOS-Apps, das den Git-Revisions-Hash abrufen und in die Versionsnummer einfügen sollte. In diesem Skript führe ich dafür git –git-dir=”$PROJECT_DIR” show -s –pretty=format:%h aus. Ich bekomme jedoch die Meldung, dass das Verzeichnis kein Git-Repository ist. Wenn ich die PROJECT_DIR var echoe und zum Terminal gehe, funktioniert Folgendes:

cd projectDirPath
git show -s --pretty=format:%h

Was nicht geht ist:

git --git-dir=projectDirPath show -s --pretty=format:%h

Übersehe ich etwas? Die Dokumentation besagt, dass ich den Pfad zu einem Git-Repository mit –git-dir angeben kann und der angegebene Pfad offensichtlich ein Git-Repository ist, da alle Git-Befehle problemlos funktionieren, wenn ich zuerst in diesen Pfad cd. Wenn ich mich jedoch nicht in diesem Pfad befinde, funktioniert die Angabe von –git-dir nicht.

  • --git-dir muss auf die zeigen .git Ordner Ihres Repositorys. Versuchen git --git-dir=projectDirPath/.git show -s --pretty=format:%h.

    – John Szakmeister

    13. Oktober 2012 um 18:51 Uhr

  • Danke, das war das Problem. Vielleicht möchten Sie dies als Antwort posten, damit ich es als Antwort auf das Problem kennzeichnen kann!

    – Michael Ochs

    14. Oktober 2012 um 10:34 Uhr

  • Groß! Ich habe dies auch als Antwort gepostet.

    – John Szakmeister

    14. Oktober 2012 um 10:40 Uhr

Benutzer-Avatar
John Szakmeister

Beim Benutzen --git-dirmüssen Sie auf die zeigen .git Ordner Ihres Repositorys. Versuchen:

git --git-dir=projectDirPath/.git show -s --pretty=format:%h

Der doc an --git-dir sagt, dass:

–git-dir=

Stellen Sie den Pfad zum Repository (“.git”-Verzeichnis) ein. Dies kann auch durch Setzen der Umgebungsvariable GIT_DIR gesteuert werden. Es kann ein absoluter Pfad oder ein relativer Pfad zum aktuellen Arbeitsverzeichnis sein.

Ich habe selbst ein Problem damit, mich daran zu erinnern. Um mir zu helfen, mich daran zu erinnern, was zu tun ist, versuche ich mich daran zu erinnern, dass die Option genau nach dem fragt, was sie will: den Pfad zum .git Verzeichnis (git-dir).

  • Nur eine Klarstellung: projectDirPath sollte ein absoluter (NICHT ein relativer) Pfad sein.

    – Bryan Jyh Herng Chong

    9. Januar 2019 um 22:03 Uhr

  • @BryanJyhHerngChong Eigentlich ist das falsch. Die Git-Manpage sagt: “Es kann ein absoluter Pfad oder ein relativer Pfad zum aktuellen Arbeitsverzeichnis sein.”

    – John Szakmeister

    10. Januar 2019 um 1:04 Uhr

  • @BryanJyhHerngChong Das ist nicht wahr. Ich habe das relevante Dokument in der Antwort hinzugefügt. Der Pfad kann ein relativer Pfad sein.

    – jdhao

    25. Dezember 2020 um 9:16 Uhr

Sie suchen die git -C Befehlszeilenoption.

-C <path>

Ausführen, als ob Git in anstelle des aktuellen Arbeitsverzeichnisses gestartet wurde. Wenn mehrere -C Optionen sind gegeben, jede nachfolgende nicht-absolut -C <path> wird relativ zum Vorhergehenden interpretiert -C <path>. Wenn <path> ist vorhanden, aber leer, z -C ""dann bleibt das aktuelle Arbeitsverzeichnis unverändert.

Diese Option wirkt sich auf Optionen aus, die Pfadnamen wie erwarten --git-dir
und --work-tree dass ihre Interpretationen der Pfadnamen relativ zu dem Arbeitsverzeichnis vorgenommen würden, das durch die verursacht wird -C
Möglichkeit. Beispielsweise sind die folgenden Aufrufe äquivalent:

git --git-dir=a.git --work-tree=b -C c status
git --git-dir=c/a.git --work-tree=c/b status

Ein Teil von --git-dirauch Einstellung --work-tree kann helfen. Für das Skript ist es gut, relevante Umgebungen zu verwenden (es ist einfacher), z

#!/bin/bash -ex
export GIT_WORK_TREE=/path/to/repo
export GIT_DIR=/path/to/repo/.git
git show -s --pretty=format:%h

1246710cookie-checkgit mit –git-dir= ergibt ‘kein Git-Repository’

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

Privacy policy