Comment commander les nôtres / les leurs sur un fichier dans magit?

16

Disons que j'ai un conflit de fusion. Je vois un fichier en conflit comme celui-ci:

Unstaged changes:
    Unmerged   Foo/bar/wibble/plop/elbow.txt

Je peux cliquer sur l'onglet ici pour ouvrir les modifications et peut-être sauter à un point à l'intérieur du fichier pour le corriger à la main, mais s'il s'agit d'un gros fichier avec beaucoup de conflits, cela peut prendre du temps.

Comment puis-je demander à git, via magit, de récupérer la nôtre ou la version du fichier, pour résoudre le conflit? Je peux copier le chemin, puis utiliser Shift-:pour entrer une commande git personnalisée, mais il semble qu'il y ait un raccourci clavier pour cela. Je ne vois rien d'évident dans le menu magit ou la fenêtre contextuelle ?.

tenpn
la source
3
Bien que cela ne réponde pas directement à votre question, cela pourrait être utile. Déplacez le point sur le fichier de conflit magit-statuset appuyez sur epour démarrer la fusion à 3 avec ediff. Une autre alternative est que dans un tampon de conflit, vous pouvez activer la mise en smerge-modesurbrillance des conflits et effectuer une fusion interactive directement dans votre tampon (pas ediff). La liaison de clé de préfixe pour smerge-modeles commandes associées est C-c ^; vous pouvez appuyer sur C-c ^ C-hpour afficher toutes les liaisons de touches.
Tu Do
Je ne trouve pas non plus "les nôtres" ou "les leurs" dans la doc. magit.github.io/master/magit.html#Pushing-and-Pulling
Ehvince
1
Ressemble à une bonne question pour ouvrir une demande de fonctionnalité?
Ehvince
1
bonne idée @Ehvince, fait: github.com/magit/magit/issues/1643
tenpn
1
Oooh: dans la prochaine version de magit, vous pouvez ksur un confict et choisir la version à conserver. C'est parfait! github.com/magit/magit/issues/1643
tenpn

Réponses:

16

Je ne sais pas quand cette fonctionnalité a été ajoutée, mais elle le fait parfaitement:

  1. Fusionnez une branche dans une autre et rencontrez un conflit
  2. Dans le tampon Magit, il y aura des sections pour Merging master, et Unstaged changes, Staged changes. Le fichier en conflit est dansUnstaged changes
  3. Sur la ligne avec le fichier en conflit, appuyez sur kpour ignorer les modifications (c'est-à-dire les modifications en conflit)
  4. Dans le mini-tampon, vous verrez la réponse:

For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort

Hut8
la source
5

Il existe plusieurs solutions:

  • utilisez smerge-ediff. Dans le fichier avec le conflit, vous exécutez M-x smerge-ediff. Il vous mettra en mode de résolution ediff, avec quatre tampons ouverts: le vôtre, le leur, la fusion et le tampon de commande. Dans le tampon de commande, vous utilisez net ppour aller au morceau suivant ou précédent, "a" ou "b" pour accepter les modifications du premier ou du deuxième tampon, ou vous pouvez aller au tampon de fusion et le modifier à votre guise.
  • utilisez ediff de magit, avec ela version stable de magit, ou M-eou M-m( magit-ediff-resolve) dans la prochaine branche de magit, et vous vous retrouverez surtout comme dans le premier cas
  • il y a aussi le mode smerge, C-c ^ net C-c ^ pvous aidera à passer d'un morceau au précédent ou au suivant, vous pouvez ensuite les éditer, ou utiliser C-c ^ opour garder la `` autre '' version, C-c ^ mpour garder la `` mienne '', C-c ^ bpour garder l'ancienne version et C-c ^ ade les garder tous.
  • vous pouvez utiliser magit-find-file pour ouvrir un fichier tel qu'il était dans certains commit.
Rémi
la source
Je n'avais pas vu que Tu Do avait déjà la plupart des réponses que je poste ici. Sory
Rémi
Merci pour la liste complète, mais je suppose que la réponse à "existe-t-il un moyen concis d'obtenir la version Ours ou Thiers" est non. :(
tenpn