Je veux utiliser Git pour gérer certaines données sur un serveur distant, donc je configurais un référentiel git reset --hard HEAD
4 Réponses :
Utilisez un crochet post-mise à jour: P>
Hooks P>
là, vous pouvez exécuter ce que vous voulez sur chaque mise à jour. p>
Merci. J'avais espéré qu'il y aurait un réglage simple pour accomplir cela. Mais les crochets semblent assez simples aussi.
Vous ne devriez pas faire cela. Il est recommandé d'avoir des référentiels nus. En d'autres termes, aucun fichier n'a vérifié, juste le répertoire .git lui-même. Vous pouvez ensuite consulter le référentiel à un autre emplacement sur votre serveur - dites, votre racine Web. De cette façon, vous obtenez: p>
Git Meilleure pratique. Selon les documents GIT, vous pouvez obtenir des "résultats inattendus" si vous ne le suivez pas. Quiconque a fait un bon bit de programmation sait que "les résultats inattendus" est le code de "va probablement manger vos enfants et devraient être évités à tout prix." P> Li>
Meilleure sécurité, si vous envisagez d'avoir les fichiers de sortie sur le serveur accessibles à partir d'un serveur Web. P> li>
Modifications locales sur votre code de contrôle et la possibilité de modifier rapidement le code en direct cochées. Vous pouvez tenter de le faire directement sur le référentiel, mais ce serait désordonné et plus sujette à une erreur. P> Li>
La possibilité de mettre à jour votre référentiel de serveur indépendamment de la mise à jour de votre code de service en direct. Ceci est assez crucial, si vous travaillez à distance et que vous devez envoyer quelque chose sur le serveur, puis effectuer des travaux supplémentaires avant qu'il ne soit prêt pour votre service en direct ou si vous avez des modifications dans votre code de service en direct (disons, différents paramètres de configuration. ) et besoin de fusionner ces changements avec les changements dans le repo, mais je ne peux pas le faire juste maintenant. p> li> ul>
Je recommanderais les étapes suivantes: p>
Mais au moins pour des configurations de non-production de différentes sortes, voir la réponse de Brandon Rhodes.
GIT Version 1.9.1
Ubuntu Server 14.04 LTS
Serveur de lampe P>
J'ai défini mon serveur de lampe pour mettre à jour mon répertoire de travail de mon GIT Repo lorsque l'un de mes développeurs Web appuie une modification du serveur. J'ai remarqué que le journal noterait les nouveaux engagements, mais ne mettrait pas à jour le répertoire de travail. Au lieu de le faire manuellement (git Checkout -f) pour chaque mise à jour, cela peut être réglé automatiquement pour le faire après la réception d'une poussée. P>
Créer un fichier nommé "Post-recevoir" dans le dossier "Hooks" avec ce contenu: P>
#! / bin / sh p>
# Mettre à jour le répertoire de travail après avoir reçu une poussée de clients distants.
# Cela devrait être dirigé vers le répertoire de travail GIT.
Git_work_tree = / var / www / dev_site git checkout -f p> li>
Activez les autorisations d'exécuter le fichier en tapant "chmod + x post-recevoir" dans le dossier "Hooks". P> LI> ol>
Il mettra maintenant à jour le répertoire de travail lorsque les commits sont poussés au repo git. Mon site montre maintenant les changements lorsque je le visite dans un navigateur. P>
Mon répertoire de travail est / var / www / dev_site p>
La ligne git_work_tree doit indiquer votre répertoire de travail.
Ceci est pour un repo régulier, pas un repo nu. Un repo nu n'a pas de répertoire de travail.
Ceci, heureusement, est maintenant pris en charge directement dans Git lui-même! Vous pouvez trouver les détails de cette réponse que je viens de faire avancer:
https://stackoverflow.com/a/38363683/ 85360 p>
Il recommande de configurer la télécommande avec P> de sorte que pousse le résultat dans une copie de travail mise à jour! P> P> P> P> P> >
Grand merci! J'apprécie vraiment comment alors me permet de garder une trace des trucs que j'avais oublié que j'ai déjà posé des questions. Je pense que beaucoup des points de la réponse acceptée sont toujours valides (peut-être pas tant les "changements en direct sur le code vérifié"), mais pour de nombreuses situations qui pourraient ne pas être "usage de production", cela est vraiment utile.