web-dev-qa-db-fra.com

Problèmes avec git et Gemfile.lock

Je continue à rencontrer l'erreur suivante avec mon Gemfile.lock chaque fois que je veux faire un git pull ou passez à la caisse d'une nouvelle succursale.

error: Your local changes to the following files would be overwritten by merge:
    Gemfile.lock
Please, commit your changes or stash them before you can merge.
Aborting

Le problème est que je n'arrive pas à comprendre comment y remédier.

  • Le stockage du fichier ne fonctionne pas - les modifications locales restent là pour une raison quelconque.
  • J'ai également essayé de lancer git checkout -- Gemfile.lock pour ignorer les modifications, mais cela ne fonctionne pas non plus - les modifications locales restent là.
  • J'ai également essayé de créer une nouvelle branche et de valider le Gemfile.lock change juste pour cette branche ... mais cela ne fonctionne pas non plus. Les changements restent!

Qu'est-ce que je dois faire? Je suis allé jusqu'à cloner un nouveau dépôt git, mais assez tôt, tout cela recommence.

35
grautur

Cela m'est arrivé et git reset --hard HEAD de la réponse acceptée n'a pas aidé. Cependant, l'exécution de spring stop a fait l'affaire. Je soupçonne que Spring réécrit le fichier chaque fois qu'il est modifié pour s'assurer qu'il est synchronisé avec le code exécuté via Spring.

82
Tristan Havelick

Après avoir fait ce qui suit, j'ai pu tirer et vérifier à nouveau les branches.

git checkout Gemfile.lock
git reset --hard HEAD

Je ne sais pas pourquoi et comment cette solution fonctionne. Les explications sont les bienvenues.

La raison pour laquelle git détectait Gemfile.lock tel que modifié dans mon cas, était que le bas du fichier avait BUNDLED WITH 1.10.3. Après la mise à jour du bundler gem update bundler, régénérant et validant Gemfile.lock, il a cessé d'apparaître dans git tel que modifié.

git version 2.2.1, Mac OSX version 10.10.4, iTerm2 Build 2.9.20150624-nightly (avec intégration Shell)

9
the_minted

Vous ne pouvez pas extraire Gemfile.lock car le printemps est en cours d'exécution dans le backend pour synchroniser votre code dans l'environnement de développement. Si vous souhaitez commander, arrêtez d'abord les processus de ressort. Vous pouvez arrêter le printemps de deux manières différentes.

  1. Soit vous arrêtez simplement le printemps en utilisant la commande dans le terminal

arrêt de printemps

  1. Ou en tuant manuellement les processus du printemps sur le local, tout comme

    ps -aef | grep spring
    kill -9 pid
    

Les deux me paraissent bien. Choisissez ce qui vous convient le mieux!

0
V K Singh