2 votes

Comment déplacer des commits (non poussés) d'une branche à l'autre ?

J'étais sur branch-x J'ai fait quelques changements et les ai validés (mais je n'ai pas poussé). Bien que les commits soient corrects, ils n'auraient pas dû être faits en branch-x mais plutôt dans branch-y . Comment puis-je prendre les commits de branch-x et les appliquer à branch-y . Je veux éviter de pousser les changements commis depuis branch-x .

Voici ce que j'ai fait dans les commandes.

(branch-x)$: git status
(branch-x)$: git add .
(branch-x)$: git commit -m "some commit"
<oops, I should have made these changes in branch-y>
(branch-x)$: git checkout -b branch-y
(branch-y)$: <how can I take the commit from branch-x and apply it here?>

4voto

Tim Biegeleisen Points 53335

Puisque vous avez déjà créé la branche que vous voulez via git checkout -b branch-y et que cette nouvelle branche a le commit que vous voulez, alors le seul problème restant est un commit supplémentaire à l'extrémité de la branche branch-x . Puisque vous n'avez pas publié branch-x pourtant, vous devriez être en sécurité en réécrivant cette histoire. Faites-le :

git checkout branch-x    # switch back to branch-x
git reset --hard HEAD~1  # nuke the rogue commit on the tip of this branch

1voto

ElpieKay Points 7502

Une solution possible est d'utiliser git cherry-pick . Supposons que nous ayons le graphe de commit comme ceci.

A-B-C-D-E->branch-x
M-N->branch-y

Maintenant vous voulez que le CDE soit sur la branche y.

git checkout branch-y
git cherry-pick C D E

ou

git cherry-pick C^..E

et nous obtenons

M-N-C'-D'-E'->branch-y

Une autre solution possible est d'utiliser git rebase .

git rebase --onto branch_y C^ E
git branch -d branch_y
git checkout -b branch_y

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