Ich versuche, git aus einem anderen Verzeichnis als dem auszuführen, in dem ich mich befinde. Zum Beispiel, wenn ich mich in:
cd /home/domain/
git status << runs perfect ie
# On branch master
# Your branch is ahead of 'origin/master' by 6 commits.
Jetzt möchte ich diesen Befehl mit der --git-dir
Option aus einem anderen Verzeichnis ausführen .
Nehmen wir also an, ich bin dabei root/
und versuche Folgendes:
git --git-dir="/home/domain/" status
## Error
fatal: Not a git repository: '/home/domain/'
Ich habe auch versucht, die aufzunehmen .git
Ordner einzuschließen, dh
git --git-dir="/home/domain/.git/" status
Aber es sieht so aus, als würde versucht, git vom Stamm aus auszuführen, dh alles aus meinem Domänenordner zu löschen und alles im Stamm hinzuzufügen.
Hoffe, jemand kann beraten, was ich falsch mache.
--git-dir
und--work-tree
für einen einfachen Befehl: siehe meine Antwort untenAntworten:
Sie müssen auch das Arbeitsverzeichnis definieren. Verwirrend weiß ich, aber es ist eine Sache der Flexibilität.
Sie können ein wenig mehr lesen hier
quelle
--git-dir
nicht angegeben, würde es prüfen, ob/mycode/.git
vorhanden, und dies verwenden, bevor ein Fehler wird.git --git-dir=~/src/s3cmd/.git --work-tree=~/src/s3cmd pull
nicht funktioniert, abergit --git-dir=/home/username/src/s3cmd/.git --work-tree=/home/username/src/s3cmd pull
funktioniertgit --git-dir="$HOME/foo/.git" --work-tree="$HOME/foo" status
Ab Git 1.8.5 (das nächste Woche erscheinen soll) wird es noch einfacher:
Keine Notwendigkeit mehr einzustellen
--git-dir
und--work-tree
!Sehen Commit 44e1e4 von Nazri Ramliy :
quelle
git status -C <path>
funktioniert es nicht!)Aufgrund Ihres obigen Kommentars scheint es, als ob Sie immer noch auf ein Problem stoßen:
Es hört sich so an, als ob Sie beabsichtigen, dies auszuführen
crontab
oder so. Möglicherweise ist es bessercd
, zuerst in Ihr Arbeitsverzeichnis zu wechseln. Beispielsweise:Dies ändert vorübergehend (in einer Unterschale, wie es die Klammern tun) das aktuelle Verzeichnis in
/home/domain
und wird dann ausgeführtgit pull origin master
. Nach Abschluss des Befehls bleibt Ihr aktuelles Verzeichnis so, wie es vor dem Befehl war.quelle
Mit Git 2.26 (Q1 2020) ist die Dokumentation übersichtlicher.
Ein Effekt der Angabe, wo sich das
GIT_DIR
befindet (entweder mit der Umgebungsvariablen oder mit dergit --git-dir=<where> cmd
Option " "), besteht darin , die Repository-Erkennung zu deaktivieren .Dies wurde in der Dokumentation etwas stärker betont, da neue Benutzer häufig verwirrt sind.
Siehe Commit d82ad54 (30. Januar 2020) von Heba Waly (
HebaWaly
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 17e4a1b , 12. Februar 2020)Die Dokumentation für den
git --git-dir
Moment enthält also:quelle