Vscode: Prise en charge de l'outil de résolution de conflits Git similaire à IntelliJ, WebStorm

Créé le 31 oct. 2017  ·  91Commentaires  ·  Source: microsoft/vscode

IntelliJ, et tous les autres IDE basés sur IntelliJ tels que WebStorm, prennent en charge l'outil de résolution de conflits d'un git merge qui affiche le conflit dans trois colonnes :

  • la première colonne pour les changements locaux
  • la troisième colonne pour les modifications du serveur
  • la deuxième colonne pour le résultat de la résolution des conflits

S'il vous plaît voir mon fichier joint.
merge-conflict-resolution

Je trouve qu'il est très facile pour nous de résoudre les conflits, car je peux comparer les changements locaux et les changements de serveur sur les mêmes fenêtres, et je peux voir le résultat de la résolution immédiatement.

Pouvons-nous s'il vous plaît soutenir cela?

feature-request merge-conflict

Commentaire le plus utile

Ce sera une fonctionnalité super cool, j'utilise VSCode pour mon travail quotidien, mais j'ai souvent recours à WebStorm lorsque je dois résoudre un conflit de fusion en raison de son interactivité et de sa facilité d'utilisation.

Tous les 91 commentaires

Ce sera une fonctionnalité super cool, j'utilise VSCode pour mon travail quotidien, mais j'ai souvent recours à WebStorm lorsque je dois résoudre un conflit de fusion en raison de son interactivité et de sa facilité d'utilisation.

des nouvelles à ce sujet? cette fonctionnalité serait incroyable. D'une part, il existe un outil de comparaison (c'est-à-dire la comparaison de deux fichiers) dans le code VS, mais vous ne pouvez pas modifier/choisir ce qu'il faut conserver ; d'autre part, il existe un outil de conflit de fusion qui permet de choisir ce qu'il faut garder (changement courant / leur changement). Maintenant, le mieux serait d'avoir les deux outils dans un seul outil, comme l'outil suggéré par @uyhung.

Je voulais aussi ajouter, pour tout contributeur qui passe : VS Code est un logiciel incroyable, continuez comme ça :) !

Ce sera une fonctionnalité incroyable... des nouvelles à ce sujet ? est-ce que quelqu'un recommande une extension qui fait quelque chose de similaire?

Je l'utilise sur PyCharm. Cette fonctionnalité étonnante aide beaucoup à éviter les bogues sur les fusions plus importantes. Tous les linters sont disponibles pendant le processus, de sorte que les erreurs/violations de style/variables inutilisées sont faciles à repérer.

S'il vous plaît dépêchez-vous avec cette fonctionnalité si vous prévoyez de l'implémenter :)

Bravo 👍 pour celui-ci. C'est la seule chose qui me retient de passer totalement à VSCode. Serait super utile et pratique.

Le jour où vous implémenterez cette fonctionnalité, j'arrêterai d'utiliser webstorm.

Non seulement pour résoudre les conflits, cette conception doit également être disponible pour voir le fichier historique.

git config merge.conflictStyle diff3 et vous l'avez aujourd'hui mais avec la disposition dans l'éditeur de VSCode - ce qui est bien mieux que d'ouvrir une boîte de dialogue et une nouvelle fenêtre pour afficher le fichier que vous aviez déjà ouvert IMO !

Des nouvelles? Est-ce programmé peut-être, ou prévu d'être programmé ?

Oui vraiment nécessaire

c'est une fonctionnalité indispensable, j'utilise l'idée inteliij juste pour résoudre les conflits.

+1, ce serait génial !

+1 ici ! Essayer de faire le changement, mais IMO c'est l'une des principales fonctionnalités manquantes pour passer de WebStorm à VSCode

Pouvons-nous s'il vous plaît arrêter avec les commentaires +1 ? Cela n'apporte rien à la conversation.
Regarde ce fil et attends...

@Zielak +1 arrêtons d'ajouter plus de commentaires

Est-ce que quelqu'un sait s'il existe un plugin qui rend cela possible ?

@rajjejosefsson Comme je l'ai dit ci - git config merge.conflictStyle diff3 )

[merge]
  conflictStyle = diff3

les voir/commun/nous. Cela ne changera pas le formatage/thème VSCode, mais vous obtiendrez ces trois parties dans votre diff au lieu de simplement eux/nous comme c'est le cas (git) par défaut.

À moins qu'il n'y ait autre chose (autre que l'ouverture de plusieurs dialogues juste pour revenir à voir un diff dans le fichier que vous aviez déjà ouvert) que les IDE JetBrains proposent qui me manquent ici?

La nouvelle version de Sublime Merge a une implémentation similaire.

Ce sera une fonctionnalité super cool, j'utilise VSCode pour mon travail quotidien, mais j'ai souvent recours à WebStorm lorsque je dois résoudre un conflit de fusion en raison de son interactivité et de sa facilité d'utilisation.

Vous pouvez ajouter ces configurations dans votre fichier .gitconfig et taper "git mergetool" sur votre terminal chaque fois qu'un conflit apparaît. Cela n'ouvrira que votre interface graphique de fusion à partir de webstorm pour chaque fichier.

[mergetool "webstorm"]
    cmd = webstorm merge $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE") $(cd $(dirname "$BASE") && pwd)/$(basename "$BASE") $(cd $(dirname "$MERGED") && pwd)/$(basename "$MERGED")
    trustExitCode = true
[merge]
    tool = webstorm

+1 ici, c'est maintenant la seule raison pour laquelle j'utilise webstorm !

+1

+1

Certes, VS Code est incroyable, à l'exception de l'absence de cet outil d'interface utilisateur.

+1, c'est exactement ce à quoi je m'attends à ce que l'outil de fusion ressemble.
Et #5770 devrait être implémenté comme ça.

+1 c'est la seule fonctionnalité qui me manque vraiment lors de l'utilisation de VSC par rapport à WebStorm.

J'aimerais beaucoup que cela soit également mis en œuvre, le seul grand tout que je vois dans le code VS en tant qu'IDE complet

Ok, puisque Webstorm semble être la seule vraie solution, je vais aller la télécharger maintenant.
J'ai vraiment hâte que VSCode prenne en charge cette fonctionnalité !!

Aussi, quelqu'un pourrait-il voter contre ce post pour moi? Merci :P

Cette fonctionnalité est-elle même en cours d'élaboration ?

+1, totalement l'utiliserait s'il était implémenté

J'ai ajouté un nouveau paramètre et une nouvelle commande pour améliorer un peu la résolution des conflits de fusion, voici ce que sera l'expérience après la fusion de https://github.com/microsoft/vscode/pull/74231

Premièrement, un nouveau paramètre merge-conflict.diffViewContext été ajouté pour montrer le contexte autour du conflit

Avant : il n'y a pas de contexte autour du diff
compare-withoutcontext

Après : avec "merge-conflict.diffViewContext": 3
compare-with-context

Deuxièmement, une nouvelle commande Comparer tout est introduite pour afficher la comparaison complète entre l'espace de travail actuel et les modifications entrantes, avec laquelle vous pouvez comparer l'ancien contenu, le contenu entrant et le dernier contenu local sur le disque.

compare-all

Plus de travail dans la zone de l'éditeur doit être effectué pour prendre en charge le style JetBrains, par exemple, en ouvrant un groupe d'éditeurs à trois colonnes à partir du conflit. Mais je veux toujours entendre vos commentaires sur la solution actuelle mentionnée ci-dessus.

C'est cool. Pouvez-vous choisir ligne par ligne le changement que vous souhaitez fusionner dans le nouveau fichier ou s'agit-il simplement d'un fichier ou de l'autre ? Ligne par ligne ou tout serait génial !!!

Si vous pouvez accepter chaque modification de l'un ou l'autre des fichiers bloc par bloc et fusionner dans le troisième, cela couvrira probablement la plupart des cas d'utilisation. Ainsi, par exemple, si un fichier avait 3 modifications et l'autre fichier en avait 4, je pouvais choisir ce que je voulais. Comme accepter 2 modifications d'un fichier et 2 modifications de l'autre. Est-ce que ça peut faire ça ? Si c'est le cas... ça déchire !

@rebornix Le contexte supplémentaire est sympa, et j'aime bien comparer tout, mais pour moi il manque encore quelques choses :

  1. Comparer chaque "côté" avec la base commune - bien qu'une vue de fusion à 3 voies soit probablement la meilleure, cela pourrait au moins aider dans l'intervalle (j'ai joué avec l'ajout de quelque chose pour cela dans GitLens)
  2. Être capable d'éditer dans la vue de comparaison et de synchroniser les modifications avec le document - c'est quelque chose dont on a parlé avant que la meilleure fusion ne soit introduite dans le noyau. Voici une demande à ce sujet (bien que la demande originale ait disparu :cry :) https://github.com/microsoft/vscode/issues/10547#issuecomment -300201327'

# 2 peut probablement être fait aujourd'hui avec un fournisseur de système de fichiers personnalisé (bien que cela semble exagéré)

@eamodio

Comparer chaque "côté" avec la base commune - bien qu'une vue de fusion à 3 voies soit probablement la meilleure, cela pourrait au moins aider dans l'intervalle (j'ai joué avec l'ajout de quelque chose pour cela dans GitLens)

Celui-ci nécessite l'ajout d'une nouvelle vue diff à trois voies (un algorithme de diff à trois voies et un éditeur à trois colonnes) mais c'est faisable. Pour #2, je pense qu'un fournisseur de système de fichiers personnalisé est la bonne voie à suivre car le contenu du fichier sur le disque contient des conflits de fusion (comme >>>>>>, <<<<<< ), tout en sélectionnant les changements de contenu dans la vue diff, nous ne voulons pas de gâcher le fichier sur le disque, c'est donc déjà un fournisseur de système de fichiers virtuel.

Besoin de cette fonctionnalité beaucoup.

@rebornix J'aime l'idée, je pense que cela peut être encore mieux que d'ouvrir un éditeur à 3 colonnes car les écrans des ordinateurs portables ne sont pas si grands. Je pense qu'il peut être plus facile de l'améliorer un peu pour ressembler enfin à l'outil de fusion Gitkracken montrant le contexte sur l'éditeur du haut et permettant de modifier le fichier de reluting (qui a actuellement >>>><<<< ...) en bas .
merge-tool@2x

Oui, souvent lorsqu'il y a un conflit de fusion, je passe à PHPStorm, même si les autres travaillent sur le projet que je fais dans VSCode. C'est bizarre que deux ans se soient écoulés et qu'il n'y ait toujours pas de fusion appropriée.

@rebornix J'aime l'idée, je pense que cela peut être encore mieux que d'ouvrir un éditeur à 3 colonnes car les écrans des ordinateurs portables ne sont pas si grands. Je pense qu'il peut être plus facile de l'améliorer un peu pour ressembler enfin à l'outil de fusion Gitkracken montrant le contexte sur l'éditeur du haut et permettant de modifier le fichier de reluting (qui a actuellement >>>><<<< ...) en bas .

Je ne suis pas d'accord, la disposition en trois colonnes fait partie de ce qui rend Webstorm si génial. Il garde une vue d'ensemble très soignée

Idem ici, je passe toujours à IntelliJ pour la résolution des conflits de fusion. L'outil baguette magique « Résoudre les conflits simples » fait également gagner beaucoup de temps !

Je reviens à Visual Studio 2017 pour résoudre les conflits...

Le 25 juin 2019 à 8h35, fabb [email protected] a écrit :

Idem ici, je passe toujours à IntelliJ pour la résolution des conflits de fusion.
L'outil baguette magique « Résoudre les conflits simples » fait également gagner beaucoup de temps !

-
Vous recevez ceci parce que vous êtes abonné à ce fil.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/microsoft/vscode/issues/37350?email_source=notifications&email_token=AAEN6O3LOPBVEY7PMABVNRDP4I3KZA5CNFSM4EBV5J4KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXZ98ZKTDN50
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AAEN6O4AO24V4GB24EWOJGDP4I3KZANCNFSM4EBV5J4A
.

vscode doit changer l'outil de conflit git, car lors de la résolution des conflits, vscode ajoute <<< , === , ce qui provoque une erreur de syntaxe du langage

@SupinePandora43 Ce n'est pas VSCode, c'est ainsi que git gère les conflits, il ajoute <<< , === aux lignes en conflit. WebStorm analyse ces blocs et crée un excellent outil visuel pour la fusion.

@vedmant alors ... vscode a besoin d'un analyseur

@ minkir014 Vérifiez l'image ci-jointe sur le commentaire original en haut, c'est ce que tout le monde veut dire.

Il s'agit de trucs et astuces contre le code, ce qui signifie qu'il est intégré au code. Alors, pourquoi ce problème est-il toujours ouvert ?

@ minkir014 Je vais à nouveau lier l'image du commentaire original ici, car vous pensez clairement à quelque chose de différent: https://user-images.githubusercontent.com/1470309/32250860-c677e4ce-bec0-11e7-82b5-0196d981cc28.png

@ minkir014 Ce qu'il y a dans le code VS maintenant n'a rien à voir avec la fonctionnalité d'IntelliJ, comparez simplement ceci: https://user-images.githubusercontent.com/1470309/32250860-c677e4ce-bec0-11e7-82b5-0196d981cc28.png et ce que vous avez posté https://github.com/Microsoft/vscode-tips-and-tricks/blob/master/media/resolve_merge_conflicts.gif voyez-vous beaucoup de similitudes ?

@ minkir014 car la fonctionnalité intégrée n'est pas la même que celle dont nous discutons dans ce fil.

La fusion à trois voies est la seule fonctionnalité qui m'empêche d'utiliser VSCode comme mon seul IDE.

La fusion à trois voies est la seule fonctionnalité qui m'empêche d'utiliser VSCode comme mon seul IDE.

Je t'entends. C'est une fonctionnalité qui tue que nous devons avoir. Je dois garder PHPStorm juste pour cette raison.

Il m'a fallu un certain temps pour réaliser que vous avez la plupart de ce dont vous avez besoin dans les mises à jour du fil ci-dessus, il n'est tout simplement pas affiché joliment, et il ne peut pas non plus faire de différences arbitraires à 3 voies (pour être super-alimenté à l'avenir par GitLens avec arbitraire commit diffing et sélection d'ancêtres, sans aucun doute).

Les modifications de configuration ci-dessous couvrent la plupart des besoins de contextualisation des conflits de fusion dans le monde réel mieux que les paramètres VSCode/Git par défaut lorsque vous souhaitez être en mesure de comprendre le contexte de deux modifications différentes lorsqu'elles ont été apportées, tout en conciliant simultanément leurs différences. Alors, pour les futurs chercheurs :

  1. Activez la révélation de l'ancêtre commun (différent) de deux diff en modifiant votre style de conflit git en diff3. Pour ce faire, soit en modifiant votre ~/.gitconfig, soit en utilisant le cli : git config merge.conflictStyle diff3
  2. Définissez votre paramètre VSCode pour la position de la vue Diff sur "En dessous" ou "À côté" "merge-conflict.diffViewPosition": "Below"

Félicitations, vous pouvez maintenant voir le contexte de vos deux différences en tant que références statiques, la base commune à partir de laquelle elles sont toutes deux dérivées, et tout en continuant à modifier les trois contextes (ancêtre, branche A et branche B) à l'aide de la différence en ligne. C'est maintenant un vimdiff des pauvres.

(ajouter un volet statique pour afficher l'ancêtre commun diff sans surbrillance serait un ajout facile de fruit à portée de main sans nécessiter de mises à jour majeures de l'éditeur ou de l'algo diff, en parlant de vimdiff)

Et si ce ne sont pas des changements dans GIT ? (J'utilise forcément, et je n'ai pas le choix pour le moment.)

Duplicata du #25887

C'est une vue à deux colonnes. Il s'agit d'une vue à trois colonnes.

Duplicata du #25887

C'est une vue à deux colonnes. Il s'agit d'une vue à trois colonnes.

J'ai pensé qu'il vaudrait la peine de lier les problèmes ensemble, car c'est le même problème.
Deux ou trois colonnes font partie de la solution.
En passant, ma motivation pour créer des liens est d'attirer l'attention des deux problèmes et d'ajouter le comportement manquant dès que possible - je voudrais vraiment utiliser cette fonctionnalité ☺

Mais voici 427 voix contre 310 (#25887). Peut-être que vous pouvez fusionner compter les votes ensemble si vous souhaitez déjà fusionner. Cette fonctionnalité sera dans le top 10

La mise en œuvre d'une fusion de volets à 3 volets de style IntelliJ efficace et conviviale (parfois appelée fusion à trois voies, mais il s'agit de deux fichiers fusionnés dans un volet de résultats) placerait le produit de l'éditeur de code VS au sommet du monde. J'en suis certain - et plusieurs de ces fils de discussion et de nombreux commentaires racontent que des personnes "s'accrochent" à leurs produits Intellij simplement à cause de l'absence de cette fonctionnalité. Je ne vois pas comment une demande de fonctionnalité pourrait être mieux motivée ou une priorité plus claire pour les propriétaires/développeurs de produits. Avez-vous des nouvelles de vos réflexions (devs, managers sur vs code) à ce sujet ?

Le fait que certaines personnes fassent allusion à la proximité des fonctionnalités déjà implémentées amène VS Code au résultat souhaité, me dit seulement que la mise en œuvre complète ne devrait pas être si exigeante, si la plupart du travail est déjà fait.

C'est exactement pourquoi j'utilise toujours Meld comme outil de fusion

C'est exactement pourquoi j'utilise toujours Meld comme outil de fusion

La fusion sublime est bien meilleure que la fusion

C'est exactement pourquoi j'utilise toujours Meld comme outil de fusion

La fusion sublime est bien meilleure que la fusion

Je suis d'accord, même si je ne pense pas que ce soit l'endroit pour discuter de l'outil de fusion qui est le meilleur.

Est-il au moins possible d'afficher une BASE commune pour les changements en cours et à venir ?

@ackvf oui, vous pouvez avec diff à

Alors quoi de neuf?

En attendant aussi, que quelqu'un me remarque quand il est disponible

attendre la même chose ... avoir cet outil sera incroyable

peut-être que je devrais avoir IntelliJ aussi :)

+1 ici, c'est maintenant la seule raison pour laquelle j'utilise webstorm !
+1
attendre la même chose ... avoir cet outil sera incroyable
peut-être que je devrais avoir IntelliJ aussi :)

Veuillez arrêter de spammer tous les abonnés de ce ticket avec des messages non liés.

Découvrez ceci https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph#review -details . Je pense que cette extension a presque des fonctionnalités similaires à celles de Webstorm IDE.

C'est la principale raison pour laquelle je n'utilise pas vscode comme éditeur principal. Ce serait formidable de voir cela ajouté car l'intégration et la fusion git intégrées sont tellement plus utiles dans WebStorm. Ce serait génial de voir cela ajouté.

J'ai besoin de ça dans ma vie.

Pas de nouvelles de cette fonctionnalité ? ou même un plugin c'est bien :D ??

vscode est génial mais utilise toujours l'outil de fusion intellij juste pour ça ..)

Toutes les nouvelles que nous avons sont la feuille de route 2020 qui mentionne "un support complet de fusion (3 voies)": https://github.com/microsoft/vscode/wiki/Roadmap#scm

Oh mec ! un si gros manque de VSCode. Je me demande comment les développeurs survivent sans cette fonctionnalité. Je vais recourir à Webstorm pour cela

J'ai vérifié l'extension Git Graph pour Visual Studio Code, mais ce n'est toujours pas la fonctionnalité. J'utilise vscode pour toutes les versions, mais fusionne sélectivement avec pycharm.

_Toujours_ en utilisant IntelliJ pour la fusion. Également le panneau de validation, où nous pouvons choisir les validations du même fichier à conserver. etc.

Homme j'ai créé cette demande il y a 3 ans :)

Bien que VSCode soit génial, je dois toujours utiliser Webstorm pour les tâches liées à Git :(

J'attends pour ça

pourquoi toujours pas de support cela? y a-t-il un plugin vscode jouant le même rôle sur le marché ?

@sshsu
Je me trompe peut-être, mais je pense que les facteurs limitants sont l'absence de fonctionnalités de l'éditeur. S'il était possible d'écrire un plugin, il y en aurait déjà un

Je me trompe peut-être, mais je pense que les facteurs limitants sont l'absence de fonctionnalités de l'éditeur. S'il était possible d'écrire un plugin, il y en aurait déjà un

Type de. J'ai commencé à implémenter un plugin de fusion pendant mon temps libre et la seule chose qui me manquait vraiment était https://github.com/microsoft/vscode/issues/85682

Cependant, je suis vraiment reconnaissant pour l'open source ide vscode 😍 Je serai donc simplement heureux de tout ce qui sera ajouté - peut-être verrons-nous même cette fonctionnalité cette année, car elle fait partie de la feuille de route 2020 😍😍

Cette fonctionnalité arrive-t-elle un jour ? La ligne principale de Visual Studio a une fusion à 3 voies dans TFS

Vous voudrez peut-être essayer ma nouvelle extension VS Code en tant que Git Mergetool . Il a quelques déficits dus au manque d'API mais je n'ai pas encore reçu de retours négatifs, sauf de moi-même. Cependant, la disposition à quatre volets proposée pourrait même présenter certains avantages par rapport à une disposition à trois colonnes.

Il n'est pas encore sur le Marketplace, mais il peut être installé manuellement. _Il est désormais disponible sur la Marketplace ._

Je supprimerai webstorm lorsque j'aurai cette fonctionnalité.

Bien nécessaire :+1:

Ce sera une excellente fonctionnalité <3

Comme solution temporaire, utilisez des outils en ligne tels que https://editor.mergely.com

J'ai un commentaire ici d'il y a quelques années disant la même chose que les autres, et bien que je pense qu'une vue de fusion alternative à trois voies serait géniale, je préfère en fait cette manière nue maintenant car c'est littéralement juste une peau sur le texte que git met là.

Ce que je veux dire, c'est que cela ne devrait pas être un "bloqueur" pour quiconque utilise VSCode. Essayez-le au lieu de revenir à un IDE IDEA pour les interactions git. (La seule extension que je recommande est Git Graph)

Cette page vous a été utile?
0 / 5 - 0 notes