J'ai quelques sites qui sont tous hébergés sur le même service d'hébergement Web sous hébergement partagé. Mon hébergeur prend en charge Git et j'ai accès à SSH, et j'ai également la configuration de Git sur mon ordinateur portable.
Je veux faire en sorte que lorsque je fais un "maître d'origine git push", il met automatiquement à jour les fichiers sur mon serveur Web, et enregistre également une sauvegarde des fichiers du commit précédent afin que je puisse facilement revenir en arrière si je le souhaite. Est-ce possible?
Réponses:
Ceci est résumé à partir de l' utilisation de Git pour gérer un site Web
La clé du processus est le hook côté serveur «post-réception» (plus d'informations sur les hooks git dans Personnalisation de Git - Git Hooks et la page de manuel githooks ). Ce hook s'exécute après que le serveur a reçu toutes les données.
Une fois que le serveur reçoit les données, il s'exécute
git checkout -f
L'option -f forcera une extraction à la tête même s'il existe des différences locales.Mettez-le dans le
hooks/
répertoire aspost-receive
et exécutable. Bien sûr, le chemin change à l'endroit où vous avez les fichiers de votre serveur Web (l'utilisation deGIT_WORK_TREE
définit la variable d'environnement afin que vous n'ayez pas à jongler avec les fichiers dot et les paramètres git sur le serveur).Pour revenir en arrière, il faut étiqueter chaque version (cela peut également être fait dans le cadre du hook post-commit). En étiquetant la version, on peut facilement identifier l'endroit où restaurer, bien que cela implique probablement de se connecter au serveur et d'extraire cette étiquette.
la source
post-receive
crochet, qui est vraiment juste un script où vous pouvez mettre ce que vous voulez.La façon la plus simple de mettre à jour l'arborescence de travail du référentiel vers lequel vous poussez est de définir
git config receive.denyCurrentBranch updateInstead
du côté du récepteur. Voir https://git-scm.com/docs/git-config/#git-config-receivedenyCurrentBranchLa réponse de Ryan avec les hooks post commit est meilleure en ce sens qu'elle permet de vérifier à un emplacement différent (vous ne voulez probablement pas avoir le .git dans votre dossier web). Mais à ce niveau, il pourrait être judicieux d'utiliser un outil de déploiement existant, comme l'a dit sleske dans les commentaires.
la source