web-dev-qa-db-fra.com

Comment résoudre le problème "Impossible d'accéder à un référentiel avec l'état: MERGING" dans EGit?

Mon équipe a récemment déménagé à Git, et pour la deuxième fois aujourd'hui, Git s'est trompé sur une seule ligne de code que j'ai moi-même modifiée et que je me suis déjà engagée dans mon local, dans un fichier que j'ai édité pour la dernière fois. C'est le message d'erreur qu'il me donne:

Cannot pull into a repository with state: MERGING"
org.Eclipse.jgit.errors.WrongRepositoryStateException

Cannot pull into a repository with state: MERGING
    Cannot pull into a repository with state: MERGING

Je ne peux pas tirer ou pousser vers le serveur de suppression. Comment puis-je réparer ça?

En fait, meilleure question, comment puis-je empêcher cela?

20
NobleUplift

Cela se produit parce que vous êtes en train de fusionner. Terminez la fusion en résolvant tous les conflits et en ajoutant les fichiers appropriés à l'index ou annulez la fusion avec git merge --abort. Notez que si vous annulez la fusion, vous obtiendrez probablement des conflits lorsque vous exécuterez votre git pull, car je suppose que votre précédent tirage a provoqué des conflits (c'est pourquoi vous avez été laissé au milieu d'une fusion). 

7
David Deutsch

Le problème ici est que les fichiers du référentiel distant ont été modifiés (c’est-à-dire que d’autres personnes ont modifié le fichier et l’ont transféré dans le référentiel que vous avez modifié dans votre copie locale). Vous avez maintenant modifié le même fichier. Erreur.
Vous devez fusionner le fichier puis valider les modifications et Push.

Right click on your project -> Team ->Merge

Lorsque vous faites cela, il vous sera demandé quelle branche fusionner. Sélectionnez la branche et procédez à la fusion.

cas 1: S'il n'y a pas de conflit, le processus de fusion sera terminé . Vous pouvez valider et pousser maintenant.

cas 2: En cas de conflit, egit affichera le message d'erreur comme conflit et tous les fichiers en conflit seront marqués d'une icône rouge sur le nom du fichier dans l'explorateur de votre projet.

Right click the files with conflict-> Team -> Merge Tool

Ceci ouvrira la fenêtre de comparaison.Check et fusionnera les changements que vous voulez . Une fois que vous avez terminé la fusion 

Right click the files with conflict-> Team -> Add to indexCommit the changes and Push

Note : Vous devez valider tous vos fichiers intermédiaires avant ce processus de fusion.
Et pour répondre à votre question 
"En fait, meilleure question, comment puis-je empêcher cela?"
Ce n’est pas un problème, cela se produit lorsque plusieurs utilisateurs travaillent dans un même référentiel.A chaque fois que vous avez tendance à Push, essayez de retirer du référentiel distant. ou des conflits dans le référentiel distant et vous résolvez les conflits et Push.

4
Vijay R.
  1. J'ai essayé de résoudre le problème du projet openshift recommandé auparavant: git merge --abort.
  2. Je suis devenu au problème "ne peut pas entrer dans un référentiel avec l'état: fusion_résolu". Résolu par: git reset --hard Voir: "ne peut pas accéder à un référentiel avec l'état: merging_resolved"
  3. Que fait: git pull
  4. git commit
  5. Pour quitter l'éditeur VIM, j'ai utilisé: <Esc key>:q<Enter key>

    6. git push

Succès!

3
RoutesMaps.com

Voici comment j'ai résolu - 

1) Right click on project -> Team -> Reset -> [Reset popup will open]
2) By Default Local Repo will be selected -
Reset to: refs/head/master
Reset Type: Mixed (HEAD and index updated)
3) Click on Reset
4) Right click on project -> Team -> Git Pull
5) Right click on project -> Team -> Push to upstream
1
prash

Faites un clic droit sur le fichier/package conflictuel et sélectionnez Ajouter à l'index et valider

1
Sumit

J'ai rencontré ce problème en utilisant eGit aujourd'hui. La solution consiste à choisir le fichier en conflit, puis à rétablir la validation. Ensuite, vous pouvez résoudre le fichier en conflit et ajouter à index, commit et Push

0
david_pang

Au milieu d'une traction, mon Eclipse est morte. Par la suite je suis resté dans cet état.

Pour résoudre ce problème, j'ai supprimé le fichier index.lock du dossier .git. J'ai alors été capable de faire le git merge --abort comme suggéré ailleurs.

0
david_lid