113 votes

Lors de l'application d'un correctif, existe-t-il un moyen de résoudre les conflits ?

Je suis sous Windows.

Pour diverses raisons, nous avons plusieurs instances git de différentes branches svn.

Il m'arrive souvent de vouloir corriger un problème dans le référentiel A, de générer un patch et de l'appliquer au référentiel B. Cela fonctionne bien sauf s'il y a des conflits.

Lors du rebasing, je fais un clic droit sur le dossier, j'utilise tortioseGit et je sélectionne l'option resolve. Cela fait apparaître une interface graphique agréable qui me permet de résoudre mes conflits.

Existe-t-il un moyen de réaliser cela avec des morceaux de patchs rejetés ?

Voici ma méthode actuelle pour créer/appliquer les patchs

git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch

233voto

g19fanatic Points 3506

Pour générer votre patch, procédez comme suit :

git format-patch --stdout first_commit^..last_commit > changes.patch

Lorsque vous êtes prêt à appliquer les correctifs :

git am -3 < changes.patch

les -3 effectuera une fusion à trois s'il y a des conflits. À ce stade, vous pouvez effectuer une git mergetool si vous voulez utiliser une interface graphique ou simplement fusionner manuellement les fichiers en utilisant vim (l'interface standard). <<<<<< , |||||| , >>>>>> la résolution des conflits).

10voto

mplf Points 509

Si vous rencontrez fréquemment le même ensemble de conflits lors de l'application de correctifs, du rebasage ou de la fusion, vous pouvez utiliser la fonction git rerere (reuse recorded resolution). Cela vous permet de prédéfinir la manière dont les conflits doivent être résolus en fonction de la manière dont vous les avez résolus dans le passé. Voir http://git-scm.com/blog/2010/03/08/rerere.html pour plus de détails sur ce fonctionnement.

4voto

MichiBack Points 840

Mon approche est la suivante :

  • Créer une branche "Intégration" dans laquelle les fichiers sont identiques
  • Appliquer le correctif à cette branche d'intégration
  • Fusionner ou rebaser vers master (je ne sais pas si rebase est utile ici, car je ne sais pas ce qui se passera lors de l'application d'autres correctifs).

3voto

ams Points 10312

TortoiseGit dispose d'une fonctionnalité de fusion qui peut ouvrir des fichiers patch.

Il y a une photo de celui-ci aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X