Version IntelliJ IDÉE
IntelliJ IDEA 2017.1.4 x64
1
Description du problème
Lorsque nous utilisons git pour développer, nous rencontrons souvent des conflits. Généralement, lors du développement collaboratif, un fichier est modifié par deux personnes en même temps. C'est à ce moment-là que nous extrayons le code pour résoudre le conflit, que nous l'ajoutons à nouveau, puis le validons et enfin pousser.
Ce blog enregistre un petit problème de résolution de conflits avec IntelliJ IDEA. Construisons d'abord le conflit
GitHub est le suivant :
L’IDEA locale est la suivante :
Les données de la troisième ligne du fichier README.md dans l'entrepôt local sont différentes de celles sur github. Si nous poussons, il nous sera demandé que nous devons d'abord extraire (récupérer + fusionner). Cette invite ne sera pas démontrée ici. Nous tirera directement
Signalez-nous qu'il y a un conflit, nous choisissons de fusionner et résolvons le conflit sur IDEA
Notez l'image ci-dessous :
Nous résolvons les conflits comme suit : Cliquez ensuite sur Appliquer
Après avoir résolu le conflit, nous devons ré-ajouter, valider puis pousser, mais pour le moment, nous utilisons la commande git status -s pour afficher l'état actuel via le client Windows git bash, mais nous constatons qu'il n'y a aucun code qui peut être ajouté. Mais à la dernière position de la flèche ( master|MERGING)
Remarque : Ce MERGING apparaît au début de la fusion et disparaît à la fin du commit, c'est-à-dire à la fin de la fusion.
git bash (ligne de commande pure) / linux (centos) ligne de commande pure : Même si le code qui résout le conflit est le même que le code de l'entrepôt local, nous devons reprendre le commit add. Vérifiez le git status -s commande avant d'ajouter et vous trouverez le devant de ce fichier. Le statut est UU
IDEA gère les conflits : si le code qui résout finalement le conflit est différent du code de l'entrepôt local, il vous demandera qu'il y a du contenu qui peut être ajouté (status -s vérifie que l'état du début du fichier est UU, le même que git bash / linux), et la solution est terminée. Si le code en conflit est le même que le code de l'entrepôt local, il est comme indiqué dans la figure ci-dessous. À ce stade, via les commandes git diff et git diff –cached , on constate que la zone de travail, la zone de stockage temporaire et le code de l'entrepôt local sont tous identiques.
Parce que nous ne pouvons pas ajouter celui ci-dessus, nous nous engageons donc directement via IDEA. Cela nous rappelle en fait qu'aucun code ne peut être validé.
C'est à ce moment-là que nous regardons le journal git. Évidemment, la fusion n'est pas encore terminée. Évidemment, je viens de résoudre le conflit, mais à mi-chemin de la fusion, IDEA a abandonné le choix.
Si nous essayons de pousser le code vers l'entrepôt à ce moment-là, cela se produira : (à savoir que nous devons d'abord fusionner puis pousser, c'est-à-dire que la moitié de la fusion est maintenant)
À ce stade, si nous essayons de fusionner via le git fourni avec IDEA, une erreur se produira car une fusion est actuellement en cours.
Solution
Maintenant que le problème est localisé, IDEA a un problème lorsque la fusion est à mi-chemin. La prochaine chose ne peut donc être résolue que par nous-mêmes. Analysons où se trouve la rupture maintenant, car nous venons de vérifier via git diff et git diff –cached commandes Il n'y a pas de différence dans l'état, alors pensons que l'ajout est terminé. Eh bien, nous nous engageons via la ligne de commande
Les informations de validation suivantes (générées par la fusion) apparaissent, :wq se termine et la fusion réussit.
Observez le journal git d'IDEA et constatez que c'est également normal
Il existe une autre solution : c'est-à-dire que nous supprimons directement .git/MERGE_HEAD, de sorte que la moitié de la fusion soit tuée par nous. Je n'ai pas essayé cette méthode, et les étudiants intéressés peuvent essayer ---------
- -----------
Auteur : M1lo
Source : CSDN
Texte original : https://blog.csdn.net/shangmingtao/article/details/79143710
Déclaration de droits d'auteur : Cet article est l'article original du blogueur, veuillez joindre le lien de réimpression au billet de blog !