web-dev-qa-db-fra.com

Git Checkout se bloque indéfiniment avec git bash. Comment résoudre?

J'ai travaillé sur un projet dans la branche develop en utilisant git bash sur mon ordinateur de travail. Je viens d'essayer de passer à la branche principale car j'ai l'intention de fusionner les modifications, mais lorsque j'essaie de le faire, la ligne de commande se bloque indéfiniment jusqu'à ce que je la supprime avec CTRL + C.

Si j'essaie de commander à nouveau, j'obtiens le message d'erreur suivant:

Un autre processus git semble s'exécuter dans ce référentiel, par exemple . un éditeur ouvert par 'git commit'. Veuillez vous assurer que tous les processus sont terminés, puis réessayez. Si cela échoue toujours, un processus git peut avoir planté dans ce référentiel plus tôt: supprimez le fichier manuellement pour continuer.

Cependant, après avoir supprimé le fichier index.lock, toute tentative d'utilisation de git checkout se bloque de nouveau dans le terminal et ne progresse jamais tant que je n'ai pas tué le processus à nouveau! Etc.!

Quelqu'un a-t-il découvert cela et, le cas échéant, comment avez-vous résolu le problème?

8
jamessct

J'ai eu le même problème très récemment et il semble être lié aux fichiers de verrouillage d'indexation agressifs de Sublime Text dans mon arbre. Si vous utilisez ST, essayez de supprimer le fichier verrou, fermez ST, puis exécutez à nouveau git checkout master.

3
spiralx

Relié la réponse ci-dessus. J'ai eu ce problème avec Eclipse et Git Shell sous Windows.

Vous avez peut-être suivi ces étapes pour vous mettre dans cette situation:

  1. Créer une branche.
  2. Modifiez un fichier dans Eclipse (ou Sublime i expect) et laissez-le ouvert.
  3. Ajoutez le fichier et validez ensuite Push branche to Origin.
  4. Le statut de Git ne dit rien du commit. 
  5. Essayez de vérifier la branche d'origine - elle se bloque.

Pour résoudre le problème:

  1. Donc Ctrl-C et supprimez le fichier de verrouillage. 
  2. Notez que le statut de git dit maintenant modified: filename

  3. Basculez vers Eclipse pour indiquer que le fichier a été modifié sur le disque - avec possibilité de recharger.

  4. Fermez le fichier dans Eclipse. 
  5. Annuler les modifications avec git checkout -- filename

Maintenant, il devrait être possible de vérifier la succursale.

1
intotecho