Je suis aux fenêtres.
Pour diverses raisons, nous avons plusieurs instances git de différentes branches svn.
Plusieurs fois, je veux résoudre un problème dans le référentiel A, générer un correctif et l'appliquer au référentiel B. Cela fonctionne bien sauf s'il y a des conflits.
Lors du rebasage, je fais un clic droit sur le dossier et utilise tortioseGit et sélectionne l'option de résolution. Cela fait apparaître une belle interface graphique pour me permettre de résoudre mes conflits.
Existe-t-il un moyen d'accomplir cela avec des morceaux de patch rejetés?
Voici mon approche actuelle pour créer / appliquer les correctifs
git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch
git mergetool
et faire une fusion à 3 avec l'interface graphique de votre choix (je suis partial pour kdiff sur Windows) ...Réponses:
Pour générer votre patch, procédez comme suit:
Maintenant, lorsque vous êtes prêt à appliquer les correctifs:
le
-3
fera une fusion à trois voies s'il y a des conflits. À ce stade , vous pouvez fairegit mergetool
si vous voulez aller à un ou tout simplement fusionner IUG manuellement les fichiers à l' aide vim (la norme<<<<<<
,||||||
, la>>>>>>
résolution des conflits).la source
--ignore-whitespace --ignore-space-change
àgit am
trop. J'ai eu des fusions insignifiantes qui ne se sont pas déroulées sans cela.git apply -3 changes.patch
semble fonctionner pour moi aussigit mergetool
. Au lieu de cela, j'ai dû trouver le commit de base du correctif original utilisé, appliquer en plus (heureusement, mon dépôt avait cela), puis rebase.git am -3
nigit apply -3
ne déposera réellement de marqueurs de conflit dans mes fichiers, même si je reçois des messages commeApplied patch to 'configure.ac' with conflicts.
eterror: patch failed: ...
. C'est surgit 2.17.1
. Peut-être que lorsque certains fichiers ne peuvent pas du tout être corrigés, git revient?Si vous rencontrez fréquemment le même jeu de conflits lors de l'application de correctifs, du rebasage ou de la fusion, vous pouvez utiliser la fonction git rerere (réutiliser la résolution enregistrée). Cela vous permet de prédéfinir comment 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 la façon dont cela fonctionne.
la source
TortoiseGit a une fonction de fusion qui peut ouvrir les fichiers de correctifs.
Il y en a une photo ici .
la source
Mon approche est:
la source