J'ai un ensemble de changements qui fonctionnent parfaitement contre une certaine version de Linux, disons 2.6.25.4.Garder les changements sur une cible mobile (comme Linux) en utilisant git
J'ai un arbre git, et créé une branche de suivi vanilla-2.6.25.4 à partir de la balise v2.6.25.4. J'ai créé une branche de ce que l'on appelle my-changes-2.6.25.4, et j'ai fait tout mon travail.
Maintenant, je voudrais rebaser mon travail au-dessus d'une nouvelle version arbitraire de Linux. Dites 2.6.28.9. Quel est le flux de travail git optimal pour y parvenir? Je sais comment créer une nouvelle branche à partir de 2.6.28.9, mais faire quelque chose comme 'git merge my-changes-2.6.25.4' donne toutes sortes de conflits d'autres choses qui ne m'intéressent pas. cassé de toute façon.
J'ai essayé de créer une nouvelle branche depuis mon travail my-changes-2.6.25.4, et de faire git rebase 2.6.28.9, en supposant que cela prendrait mes changements de 2.6.25.4 et les appliquerait au dessus de 2.6.28.9, mais Cela m'a donné des tonnes de conflits qui n'étaient pas liés à tout ce que j'ai changé.
Je ne suis pas sûr de la bonne façon de procéder. J'utilise l'arbre linux stable http://www.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6-stable.git, et je pense que certains des problèmes peuvent provenir du fait que les balises versionnées, v2.6.x.y ne sont pas toutes de la même lignée.
Est-ce que quelqu'un sait comment faire cela correctement? Un crédit supplémentaire pour avoir trouvé un moyen d'avancer automatiquement aussi loin que possible grâce à la recherche binaire pour trouver le prochain endroit où Linux a cassé mon code en changeant une interface, mais j'imagine une fois que je sais ce que j'essaie réellement de faire. .
Cela semble juste merci pour l'explication. Je pense que vous avez fait une erreur dans l'exemple de code, si vous effectuez la première extraction, vous obtenez une nouvelle branche contre 2.6.28.9, mais ce n'est pas ce que vous voulez pour le moment, car il ne contient plus vos changements locaux et rebaser n'aurait aucun sens. Si vous le changez en 'git checkout -b changes-2.6.28.9' plutôt que 'git checkout -b changes-2.6.28.9 v2.6.28.9' alors les choses fonctionnent. Les choses semblent fonctionner, car mon premier conflit est légitime. Maintenant, j'attends la stupide auto-garbage collection. Pourquoi git essaye-t-il d'être Java? Je peux gc ... – nosatalian
Argh, j'ai changé cela pensant que c'était faux et c'était juste la première fois. Pas assez de café encore ce matin. Je n'ai jamais eu beaucoup de problèmes avec "git gc" qui prend beaucoup de temps ...mais alors je suis obsédé à le faire manuellement après avoir tiré quelques révisions afin qu'il ne soit jamais lancé automatiquement :) – araqnid