Ausführen eines Git-Pulls aus einem anderen Verzeichnis
Lesezeit: 4 Minuten
öffnetas
Ich konfiguriere kalimoucho (ein kleiner Play Continuous Integration Server), und damit es funktioniert, muss ich einen Befehl ausführen, um ein geklontes Git-Hub-Repository von außerhalb zu ziehen.
Um genauer zu sein, erkläre ich es an einem Beispiel.
Ich habe folgendes Depot
cd /home/sas
mkdir apps
cd apps
mkdir myApp
cd myApp
git init
echo "my file" > file
git add .
git commit -m "initial commit"
Nur ein dummes Test-Repository, in dem meine App vermutet wird
Jetzt muss ich dieses Repository in einen Checkout-Ordner klonen.
cd /home/sas
mkdir calimoucho
cd calimoucho
mkdir checkout
cd checkout
git clone /home/sas/apps/myApp/
Der kontinuierliche Integrationsserver muss neue Änderungen von ~/apps/myapp nach ~/calimoucho/checkout/myapp ziehen und dabei einen Befehlszeilensatz von ~/calimoucho ausführen
fatal: /usr/lib/git-core/git-pull cannot be used without a working tree.
Wenn ich die Option –work-tree nicht spezifiziere, wird der Pull ausgegeben, aber Änderungen werden auf den Ordner ~/calimoucho anstatt auf ~/calimoucho/checkout/myApp angewendet
Haben Sie eine Idee, wie Sie das geklonte Repo aus dem Ordner ~/calimoucho aktualisieren können?
Vielen Dank
Diese Frage wurde bereits überprüft stackoverflow.com/questions/7188314/…
– öffnetwie
1. Oktober 2011 um 20:04 Uhr
Diese Frage hatte ich auch. Ich habe die Antwort in der Git-Dokumentation gefunden (https://git-scm.com/docs/git).
Führen Sie den Befehl aus
git -C <git-working-directory> pull <git remote>
Der spezifische Befehl zur Beantwortung dieser Frage lautet
git -C checkout/myApp/ pull
Beachten Sie, dass es wichtig ist -C <git-working-directory> kommt vor dem pull Befehl und alle zusätzlichen Pull-Optionen können am Ende des Befehls angegeben werden. Im obigen Beispiel ist die git clone hätte das Standard-Remote-Repository ~/apps/myapp eingerichtet, sodass es nicht erforderlich ist, das Remote-Repository anzugeben.
Benutzer14827129
git -C ~/Documents/blar/blar/directory/ pull
Das hat bei mir nach stundenlanger Suche funktioniert. Ich bin auf einem Mac im Terminal.
Diese Antwort fügt der bereits von @Danny bereitgestellten Antwort nichts hinzu.
– blthayer
2. Juni 2021 um 18:21 Uhr
das gleiche hier, auf Ubuntu 22, normale Bash-Shell. Kein Glück mit git-dir=sofortiger Erfolg mit -C
Ich verwende es in einem Post-Update-Hook, um pm2 automatisch auf meinen Testserver zu ziehen und neu zu starten.
--git-dir tut mehr als das. -C ist eine bessere Option. Von der Handbuchseite für Git: If you just want to run git as if it was started in <path> then use git -C <path>.
– Ruslan Gunawardana
23. Juni 2020 um 12:43 Uhr
Hallo, ich habe vor einigen Jahren für diesen Beitrag gestimmt, aber als ich diesen Befehl wiederverwendete, stellte ich fest, dass er anders funktioniert. Ich verwende es in einer Git-Aktion, mein Git-Kopf wurde aktualisiert, aber es wurden keine Dateien geändert. Ich musste hart laufen, um die Änderungen in der . Ich denke, dass dir nur verwendet werden sollte, wenn Sie sich im Projektordner befinden, sich die .git jedoch in einem anderen Ordner als diesem befindet
– Pascal de Selys
26. Juni 2021 um 9:02 Uhr
In meinem Fall ist dies nur eine funktionierende Lösung:
git --git-dir=/gitbackup/test/.git pull
ryantm
Sie sollten den Arbeitsbaum nicht auf ein anderes Repository als die Variable git-dir setzen. Ich denke, sie sind dazu gedacht, verwendet zu werden, wenn Sie nicht möchten, dass sich der .git-Ordner im selben Verzeichnis wie Ihr Arbeitsbaum befindet. Versuchen Sie stattdessen Folgendes:
Ich habe es versucht, es gibt: sas@test:~/calimoucho$ git pull ../apps fatal: Kein Git-Repository (oder eines der übergeordneten Verzeichnisse): .git (versucht auch mit ../apps/myApp, . ./apps/meineApp/.git)
– öffnetwie
1. Oktober 2011 um 20:22 Uhr
Ah! Das ist das Problem, wenn Sie im geklonten Repo-Ordner stehen, funktioniert alles einwandfrei (tatsächlich funktioniert ein einfacher “Git-Pull” ok) … das Problem ist, wie man es von einem anderen Ordner aus macht …
– öffnetwie
2. Oktober 2011 um 13:38 Uhr
Sollte das nicht --work-tree Kommen Sie Vor das pull Befehl, so: git --work-tree=checkout/myApp/ pull ../../apps/myapp
– Poterca
3. August 2012 um 19:35 Uhr
Noam Manos
Falls Ihre Git-Version die git-arbeitsverzeichnis Möglichkeit:
Unbekannte Option: -C
Dann nutzen Sie die Push-Verzeichnis vorher befehlen.
Dies wird beispielsweise Ihr Git-Projekt aus dem übergeordneten Verzeichnis ziehen (oder klonen, wenn es nicht existiert):
Ich habe es versucht, es gibt: sas@test:~/calimoucho$ git pull ../apps fatal: Kein Git-Repository (oder eines der übergeordneten Verzeichnisse): .git (versucht auch mit ../apps/myApp, . ./apps/meineApp/.git)
– öffnetwie
1. Oktober 2011 um 20:22 Uhr
Ah! Das ist das Problem, wenn Sie im geklonten Repo-Ordner stehen, funktioniert alles einwandfrei (tatsächlich funktioniert ein einfacher “Git-Pull” ok) … das Problem ist, wie man es von einem anderen Ordner aus macht …
– öffnetwie
2. Oktober 2011 um 13:38 Uhr
Sollte das nicht --work-tree Kommen Sie Vor das pull Befehl, so: git --work-tree=checkout/myApp/ pull ../../apps/myapp
– Poterca
3. August 2012 um 19:35 Uhr
13007600cookie-checkAusführen eines Git-Pulls aus einem anderen Verzeichnisyes
Diese Frage wurde bereits überprüft stackoverflow.com/questions/7188314/…
– öffnetwie
1. Oktober 2011 um 20:04 Uhr