git-rebase
les mentions de page de manuel -X<option>
peuvent être transmises git-merge
. Quand / comment exactement?
Je voudrais rebase en appliquant des correctifs avec une stratégie récursive et leur option (appliquez n'importe quel bâton, plutôt que de sauter des commits entiers en conflit). Je ne veux pas de fusion, je veux rendre l'histoire linéaire.
J'ai essayé:
git rebase -Xtheirs
et
git rebase -s 'recursive -Xtheirs'
mais git rejette -X
dans les deux cas.
git rebase -Xtheirs
fonctionne dans les versions récentes, sauf que les conflits d'arborescence doivent être résolus manuellement. Vous devez exécuter git rebase -Xtheirs --continue
(avec -X
répété) après avoir résolu ces conflits.
git
git-rebase
Kornel
la source
la source
git rebase --interactive
aussi avec . Voir ma [réponse mise à jour ci-dessous ( stackoverflow.com/a/2945367/6309 ).Réponses:
Vous pouvez l'utiliser avec Git v1.7.3 ou versions ultérieures.
(qui est un court pour
git rebase --strategy recursive --strategy-option theirs ${branch}
comme indiqué par la documentation )À partir des notes de version de Git v1.7.3:
git rebase --strategy <s>
appris l' option--strategy-option
/-X
pour passer des options supplémentaires qui sont comprises par la stratégie de fusion choisie.NB: «Les nôtres» et «les leurs» signifient le contraire de ce qu'ils font lors d'une fusion directe. En d'autres termes, "leur" favorise les commits sur la branche courante .
la source
ours
ettheirs
semble être le contraire de ce que j'attends. Je dois utilisertheirs
pour favoriser ma branche actuelle.-X
implique-s recursive
, donc vous pouvez maintenant utiliser justegit rebase ${branch} -X theirs
. (source git-scm.com/docs/git-rebase#git-rebase--Xltstrategy-optiongt )Ceci est pour les stratégies de fusion qui viennent avec leur propre ensemble d'options
devrait fonctionner, bien que ce patch mentionne (février 2010):
Donc si ça ne marche toujours pas, ça fait débat en ce moment!(pris en charge dans git récent)
Mise à jour du commit db2b3b820e2b28da268cc88adff076b396392dfe (juillet 2013, git 1.8.4+),
Cela signifie
-X
que la stratégie fonctionne désormais avec le rebase interactif, ainsi que le rebase simple.la source
Comme l'a dit iCrazy , cette fonctionnalité n'est disponible qu'à partir de git 1.7.3. Donc, pour les pauvres âmes (comme moi) utilisant toujours 1.7.1, je présente une solution que j'ai faite moi-même:
git-rebase-leur
C'est un script très soigné (et donc long), destiné à une utilisation en production: options d'interface utilisateur, gère plusieurs fichiers, vérifie si le fichier a réellement des marqueurs de conflit, etc., mais le "noyau" peut être résumé en 2 lignes:
Et voici le script complet:
la source
git rebase --strategy="recursive --theirs" master