Nous avons un référentiel git distant que nous déployons normalement lorsque vous l'utilisez git push
sur notre serveur de développement, puis git pull
sur nos serveurs en direct, pour obtenir la dernière version du référentiel transférée.
Mais si nous avons validé et poussé quelques révisions (sans git pull
serveur actif), comment pouvons-nous faire une git pull
référence à l’ancien commit que nous voulons?
c'est à dire quelque chose comme git pull -r 3ef0dedda699f56dc1062b5dcc2c59f7ad93ede4
git pull server:repo
rapport à la normalegit pull
)uploadpack.allowReachableSHA1InWant
Depuis Git 2.5.0, cette variable de configuration peut être activée sur le serveur, voici la demande de fonctionnalité GitHub et la validation par GitHub qui active cette fonctionnalité .
Bitbucket Server l’a activé depuis la version 5.5+ .
Usage:
la source
Si un processus de votre serveur live accède immédiatement au contenu que vous venez de
git checkout 3ef0d
extraire (c’est-à-dire que vous ne pouvez pas travailler après l'extraction), vous devez envisager de baliser la version que vous souhaitez déployer en production et plus particulièrement d'extraire cette étiquette en production, de sorte que l'extraction ne soit pas immédiate. changez votre répertoire de travail. Sinon, vous risqueriez de pousser quelqu'un juste avant votre tirage.la source
Notez que
git pull git checkout my-old-commit
maintenant vous laisse dans un état DETACHED HEAD - vous envoyez effectivement des commits futurs dans ce référentiel par un nouveau chemin de validation. Pour un référentiel de déploiement, ce n'est pas un problème majeur, car les seuls validations doivent être celles déjà validées correctement avant d'être extraites.Cependant, il est parfois utile de vérifier que les marqueurs de validation (tête, balises, télécommandes) sont identiques à ceux du référentiel principal. Pour résoudre ce problème après votre commande:
git reset
- rattache la têtegit fetch
- synchronise les marqueurs pour les télécommandes [cela peut dépendre de la version de Git - notre environnement est toujours sur 1.7 ... donc peut-être plus nécessaire YMMV]la source