J'utilise CLI mergetool vimdiff
et plutôt que d'aller ligne par ligne et de taper : diffg RE
pour chaque changement pour sélectionner la version REMOTE, existe-t-il un moyen peut simplement avoir la version REMOTE du fichier entier comme fusion cible?
3 Réponses :
(alternative CLI)
Je sais que cela ne répond pas vraiment à votre question tel quel, mais si vous avez besoin de tout prendre d'un côté pour un fichier en conflit dans une fusion , vous n'avez même pas besoin d'un outil.
Vous pouvez vérifier la version de fichier que vous voulez (consultez la doc ici et là ) puis ajoutez
pour résoudre le conflit:
git checkout -m path/to/file
Notez que vous pouvez également , si vous regrettez ce déplacement, ramenez-le à l'état non fusionné avec des marqueurs de conflit, avec
git checkout --ours path/to/file # or git checkout --theirs path/to/file # and then to conclude the resolution git add path/to/file
Utilisez :% diffget
pour obtenir tous les morceaux.
diffget code> prend - comme la plupart des commandes vim - une plage. Pour citer vimhelp:
:diffg :diffget :[range]diffg[et] [bufspec] Modify the current buffer to undo difference with another buffer. [...] See below for [range]. [...] When no [range] is given, the diff at the cursor position or just above it is affected. When [range] is used, Vim tries to only put or get the specified lines.
%
est remplacé par le nom du fichier actuel (voir : help c_%
).
Lorsqu'il est donné sous forme de plage, cela signifie utiliser toutes les lignes.
Dans mergetool, si vous avez plus de 2 tampons, vous ne pouvez pas utiliser : diffget
, car Vim ne sait pas à partir de quel fichier obtenir la différence.
Cependant, lorsque vous résoudre un conflit (vous devez avoir mergetool
en cours d'exécution), vous avez quelques fichiers créés par Git pour gérer le conflit:
Unmerged paths: (use "git reset HEAD <file>..." to unstage) (use "git add <file>..." to mark resolution) both modified: my/conflicting/file.py Untracked files: (use "git add <file>..." to include in what will be committed) .env my/conflicting/file.py.orig my/conflicting/file_BACKUP_5038.py my/conflicting/file_BASE_5038.py my/conflicting/file_LOCAL_5038.py my/conflicting/file_REMOTE_5038.py
Ils représentent différents côtés du conflit:
Donc, ce que vous pouvez faire est de copier le fichier _REMOTE_
comme votre actuel ( chemin cp / vers / fichier_REMOTE_ * chemin / vers / fichier
), ou dans mergetool, copiez le contenu de _REMOTE_
(:% y
) et remplacez le contenu de votre fichier par celui-ci ( ggVGp
, allez à la haut, allez en mode ligne visuelle, allez à la fin, collez).
Cherchez-vous
:% diffget
?C'est la réponse que je cherchais, merci.
Voir ma réponse ci-dessous pour un peu plus de détails.
Git vous permet de spécifier des stratégies de fusion (les nôtres, les leurs) mais celles-ci affectent l'ensemble de la fusion. Faites attention