Comment faire pour forcer la caisse de la dernière révision à partir d'un serveur distant?
J'ai repository sur GitHub, pour lequel je m'engage régulièrement de mon ordinateur local. De l'autre côté j'ai du serveur tirant à partir du référentiel. Le serveur web juste exécute une git pull
afin d'obtenir les derniers changements depuis le dépôt GitHub. C'est complètement automatisé et doit le rester (solutions, comme le Rubis Outil de Capistrano sont out).
Un simple git pull
fonctionne généralement très bien. Cependant, parfois, je change le dernier commit (git commit --amend
) et git push
les changements à deux reprises pour GitHub. Si le serveur auto-mise à jour du code entre les deux pousse à GitHub, la prochaine côté serveur git pull
échoue car il y a conflit de fusion.
Pour résoudre ce problème, j'ai besoin de le problème suivant: Le serveur doit continuer à git pull
(ou quelque chose d'équivalent) le dépôt GitHub mais dans le cas d'un conflit de fusion, le dépôt GitHub faut juste prendre la priorité sur le dépôt local sur le serveur. Donc, je veux une commande git qui se comporte comme git clone
, mais ne copie pas l'ensemble du référentiel de tous les temps.
Vous devez vous connecter pour publier un commentaire.
JB a raison, mais je vais développer un peu sur sa réponse.
Au lieu d'avoir le serveur d'exécuter automatiquement
git pull
, vous devez l'exécuter engit fetch origin; git checkout origin/master
. Bien sûr, cela suppose que vous avez eu la "origine" à distance mis en place pour référer à votre ordinateur local (repo.Si jamais vous avez besoin de modifier le serveur de sources directement (pour une solution rapide, ou quoi que ce soit) et souhaitez valider ces modifications, vous pouvez
git branch -f master origin/master
avant de faire le commit pour obtenir le serveur maître de la branche fixée à la même livraison que l'ordinateur local succursale de.Vous pouvez bien sur faire le travail forcé git checkout si vous n'avez pas à faire toute les modifications locales, mais la bonne réponse serait de jamais modifier les commits qui ont quitté votre dépôt local.
Je vous ne modifiez jamais les sources que vous
pull
, ce que vous voulez probablement faire est de simplementfetch
puischeckout
.