2017-04-17 8 views
0

J'ai mon projet de rails Je travaille sur une branche séparée. J'ai fait beaucoup de changements à des choses comme l'ajout de nouveaux modèles, changements de schéma, etc. mais j'ai récemment fait un bundle update au lieu d'un bundle install pour ajouter une nouvelle gemme. Je n'avais pas non plus verrouillé mes versions de gemmes (ce que je devrais probablement faire) et il en a mis à jour plusieurs vers les dernières versions. Cela a fini par casser beaucoup de choses, semble-t-il. Comment puis-je les récupérer sans avoir à perdre tous mes "autres" changements dans ma branche? Ma première pensée était d'aller rechercher tous les numéros de version de mon fichier de verrou de gemmes master branches, puis les ajouter à mon gemfile existant dans la branche et refaire la mise à jour pour les restaurer. Mais peut-être que ce n'est pas ce que je devrais faire? Merci!Comment annuler ma récente mise à jour de bundle sans annuler toutes mes modifications?

+0

Si la mise à jour gem est isolée sur un seul commit, vous pouvez utiliser [cerise picking] (https://git-scm.com/docs/git-cherry-pick) pour contourner la mauvaise validation. Sinon, vous devez ajouter les contraintes de version à gemfile et lancer 'gem update' à nouveau pour obtenir les dépendances correctes. – max

+0

@max, ok merci. Je pense que je vais aller de l'avant et faire les numéros de version de regarder le fichier de verrouillage de gemme 'master' branches et éditer mon fichier gem existant. Il semble que j'aurais dû faire cela dans le passé de toute façon. – daveomcd

+0

Si vous avez simplement saisi la forme 'master' de' Gemfile.lock' et fait 'bundle install', cela ne vous aiderait-il pas? Je ne pense pas que vous ayez besoin de contraindre les versions dans votre 'Gemfile' juste pour ramener les choses à l'état précédent. – BoraMa

Répondre

0

D'abord, utilisez gitk ou similaire pour trouver le dernier commit qui a eu les "bonnes" versions de votre Gemfile.lock. Ensuite, git checkout $COMMIT Gemfile.lock va réinitialiser ce fichier à la version de la validation $COMMIT. Bien sûr, répétez pour Gemfile si vous avez piraté dans celui-là aussi.

En aparté, vous généralement pas versions de verrouiller manuellement vos gemmes dans Gemfile, c'est-ce que Gemfile.lock est pour.