Comment résoudre les conflits dans EGit
Je suis en utilisant EGit sur Eclipse v4.3 (Kepler). Je veux engager et de pousser mes modifications. Je fais tirer le premier et le fichier est en conflit. Après avoir manuellement la résolution du conflit (locale et distante sont les mêmes aujourd'hui), je suis toujours en cours d'exécution dans des problèmes.
Voici les messages d'erreur pour chaque action:
Pousser vers l'amont
master: master [refusé - non-avance rapide]
Pull
Ne peut pas tirer dans un dépôt de l'état: MERGING_RESOLVED
Marque comme fusionné
Échec de l'ajout de ressources d'index a Échoué pour ajouter une ressource à l'index Exception interceptée lors de l'exécution de la commande ajouter
Hard reset
Une erreur interne s'est produite lors de la: "Réinitialisation des refs/heads/master".
Exception interceptée lors de l'exécution de la commande de réinitialisation. {0}
Comment puis-je supprimer le conflit et de pousser mes modifications? Ce que je fais mal?
- Normalement, vous devez ajouter l'résolu fichier à l'index (étape) et ensuite envoyer le résultat (pour une fusion). Pourriez-vous inclure la trace de la pile pour "Exception interceptée lors de l'exécution d'ajouter une commande"?
- où puis-je voir la trace de la pile pour qui? le message d'origine s'affiche dans un popup et j'ai montré le message d'erreur quand je clique sur "<< Détails".
- Essayez le "Journal des Erreurs" de la vue.
- le journal des erreurs montre le même que dans la question.
Vous devez vous connecter pour publier un commentaire.
Êtes-vous à l'aide de l'Équipe de Synchroniser la vue? Si oui, c'est ça le problème. La résolution des conflits dans l'Équipe de Synchroniser ne fonctionne pas avec EGit. Au lieu de cela, vous devez utiliser le Dépôt Git de vue.
Ouvrir le Git point de vue. Dans la vue Repository Git, aller sur Branches → Local → maître et faites un clic droit → de Fusion...
Il devrait sélection automatique Suivi à Distance →
origin/master
. Appuyez sur la touche Merge.Il devrait montrer
result:conflict
.Ouvrir les conflits de fichiers. Ils doivent avoir un vieux sk000l >>>> ===== <<<< style de conflit de fusion dans les fichiers. Modifier le fichier pour résoudre le conflit, et de les enregistrer.
Maintenant dans le Git "mise en scène", il devrait afficher le fichier modifié en 'Unstaged les Modifications". Clic droit et " Ajouter à l'Indice de'
Répétez l'opération pour tous les fichiers restants.
Maintenant à partir de la git "mise en scène" de la vue, commit et push. Comme Git/Eclipse sait maintenant que vous avez fusionné la distance de l'origine des changements dans votre maître, vous devez éviter les non-avance rapide d'erreur.
Je trouve aussi de la difficulté à résoudre les conflits de fusion EGit. Quand je suis prêt à commettre des modifications à un référentiel partagé, les étapes que j'ai appris sont comme suit:
Ce guide a été utile pour moi
http://wiki.eclipse.org/EGit/User_Guide#Resolving_a_merge_conflict.
Mis à JOUR
Juste une remarque sur ce sujet de mon intervention, c'est comment j'ai procéder:
Il est dangereux, dans certains cas, mais il est très utile pour éviter d'avoir recours à des outils comme Git Extension ou de la Source de l'Arbre
Je sais que c'est un vieux post, mais je viens de me frapper avec un problème similaire et a été en mesure de le résoudre, donc je pensais que je voudrais partager.
(Mise à jour: Comme indiqué dans les commentaires ci-dessous, cette réponse était avant l'inclusion de la "git stash" pour eGit.)
Ce que j'ai fait:
Espère que ça aide.
Juste un clic droit sur un fichier en conflit et l'ajouter à l'index après la résolution des conflits.
Cette approche est similaire à la "cachette" de la solution, mais je pense que ça pourrait être plus clair:
Pour résoudre les conflits, l'utilisation de Git stash pour enregistrer immédiatement vos modifications non validées; puis tirez vers le bas de la télécommande changement de référentiel, puis pop de votre local cachette de réappliquer vos modifications non validées.
Dans Eclipse v4.5 (Mars) pour ranger les changements (un ajout relativement récent, n'était pas dans les précédentes EGit) je le fais: clic-droit sur un haut niveau projet Eclipse qui est dans Git de contrôle, choisissez Équipe, choisissez Caches, choisissez Cachette Changements;
une boîte de dialogue s'ouvre pour demander une cachette message de commit.
Vous devez utiliser le menu contextuel sur un haut niveau le projet! Si je clic droit sur un répertoire ou un fichier dans un Git-contrôlé projet je n'ai pas le menu contextuel approprié.
Que c'est une question nous sommes confrontés le plus souvent, ci-dessous sont les étapes à suivre pour le résoudre.
Ouvrir le Git point de vue. Dans le Dépôt Git, aller à
sur Branches → Local → maître et faites un clic droit → de Fusion...
Il devrait sélection automatique Suivi à Distance → *origin/master. Appuyez sur la touche Merge.
Lancement de vue de la scène dans Eclipse.
Double-cliquez sur les fichiers qui ont montré conflit
Dans le conflit de fusion de vue, en sélectionnant la flèche gauche pour tous les non-conflit + conflit changements de gauche à droite, vous pouvez résoudre tous les conflits.
Enregistrer le fichier fusionné.
Faire une Équipe → tirer à partir d'Eclipse à nouveau.
Vous êtes tous ensemble 🙂
D'un processus antérieur de la résolution des conflits (par le biais de la mise en scène) dans Eclipse semblait beaucoup plus intuitif, il y a plusieurs années, donc soit l'outillage ne fonctionne plus dans la manière que j'ai été ou je suis de rappeler le processus de résolution des conflits de fusion au sein de SVN dépôts. Peu importe, il y avait cette chouette "Marquer comme Fusionné" option de menu de clic droit sur un fichier en conflit.
Avance rapide jusqu'en 2019, je suis en utilisant le "Git mise en scène" afficher dans Eclipse (v4.11). En fait, je suis en utilisant STS (Spring Tool Suite 3.9.8), mais je pense que le Git mise en scène de la vue est une norme plugin Eclipse pour travailler avec Java/Spring-en fonction des projets. Je partage l'approche suivante dans le cas où il aide à quelqu'un d'autre, et parce que je te lasses ou résoudre les conflits de fusion du GIT en ligne de commande. 😉
Parce que la fonctionnalité que je le rappel est maintenant disparu (ou peut-être fait différemment avec la version actuelle de GIT et Eclipse), voici les étapes que j'ai maintenant à suivre pour résoudre les conflits de fusion par Eclipse en utilisant un dépôt GIT. Il semble que le plus intuitif pour moi. De toute évidence, il est clair à partir du nombre de réponses ici qu'il y a de nombreux façons de résoudre les conflits de fusion. Peut-être que j'ai juste besoin de passer à JetBrains IntelliJ, avec leurs trois voies de l'outil de fusion.
REMARQUE: les options de menu ne sont pas intuitifs, un certain nombre de choses peuvent être trompeuses. Par exemple, si vous avez enregistré des mises à jour localement, et essayez de rouvrir le fichier en conflit à confirmand que les modifications apportées ont persisté, la confusion peut, depuis l'origine du conflit de l'état est ouvert... pas vos modifications.
Mais une fois que vous ajoutez le fichier(s) à l'index, vous verrez vos changements.
Je recommande également que lorsque vous tirez dans les changements qui en résultent dans un conflit de fusion, que vous "ranger" vos modifications locales d'abord, et ensuite, tirez les changements de nouveau. Au moins avec GIT, comme une protection, vous ne serez pas autorisé à tirer dans les changements externes jusqu'à ce que vous revenir à vos modifications ou les ranger. Jeter et de revenir à la TÊTE de l'état, si les modifications ne sont pas importants, mais les ranger autrement.
Enfin, si vous avez un ou deux à la modification de fichiers, puis envisager de se retirer dans des fichiers textes séparés comme une référence, puis revenir à la TÊTE et ensuite mettre à jour manuellement le fichier(s) lorsque vous tirez des changements à travers.
GIT a le plus irritant façon de résoudre les conflits (à la différence de svn où vous pouvez simplement comparer et faire les changements). Je crois fermement, git est complexe processus de résolution de conflit. Si je devais résoudre, je voudrais simplement prendre un autre code à partir de GIT en tant que frais, ajouter mes modifications et de les valider. Il est simple et pas trop orientée sur les processus.