Ich habe ein paar Websites, die alle auf dem gleichen Webhosting-Service unter Shared Hosting gehostet werden. Mein Webhost unterstützt Git und ich habe SSH-Zugriff darauf, und ich habe auch Git-Setup auf meinem Laptop.
Ich möchte es so machen, dass wenn ich einen "Git Push Origin Master" mache, er automatisch die Dateien auf meinem Webserver aktualisiert und auch ein Backup der Dateien des vorherigen Commits speichert, so dass ich einfach ein Rollback durchführen kann, wenn ich möchte. Ist das möglich?
Antworten:
Dies wird in Verwenden von Git zum Verwalten einer Website zusammengefasst
Der Schlüssel zu diesem Prozess ist der serverseitige Hook "post-receive" (weitere Informationen zu Git-Hooks finden Sie unter Anpassen von Git - Git Hooks und in der Manpage zu Githooks ). Dieser Hook wird ausgeführt, nachdem der Server alle Daten empfangen hat.
Sobald der Server die Daten empfangen hat, wird er ausgeführt.
git checkout -f
Die Option -f erzwingt ein Auschecken an den Kopf, auch wenn lokale Unterschiede bestehen.Stellen Sie das in das
hooks/
Verzeichnis alspost-receive
und ausführbar. Natürlich ändert sich der Pfad dahin, wo Sie die Dateien Ihres Webservers haben (die Verwendung vonGIT_WORK_TREE
legt die Umgebungsvariable fest, so dass Sie keine Punktedateien und Git-Einstellungen auf dem Server jonglieren müssen).Zum Zurücksetzen sollte jedes Release mit einem Tag versehen werden (dies kann auch als Teil des Post-Commit-Hooks erfolgen). Durch Markieren der Version kann man leicht die Stelle identifizieren, an der ein Rollback durchgeführt werden soll. Dies beinhaltet jedoch wahrscheinlich die Anmeldung beim Server und das Auschecken dieser Markierung.
quelle
post-receive
Hook machen, der eigentlich nur ein Skript ist, in dem du alles einfügen kannst, was du willst.Die einfachste Methode zum Aktualisieren des Arbeitsbaums des Repositorys, auf das Sie pushen, ist die Einstellung
git config receive.denyCurrentBranch updateInstead
auf der Empfängerseite. Siehe https://git-scm.com/docs/git-config/#git-config-receivedenyCurrentBranchRyans Antwort mit Post-Commit-Hooks ist insofern besser, als es das Auschecken an einen anderen Ort ermöglicht (wahrscheinlich möchten Sie das .git nicht in Ihrem Webordner haben). Aber auf dieser Ebene ist es möglicherweise eine gute Idee, ein vorhandenes Bereitstellungstool zu verwenden, wie in den Kommentaren von sleske angegeben.
quelle