Existe-t-il un moyen de rebaser un seul commit d'une branche vers une autre branche?
J'ai cette structure de branche:
-- -- -- -- -- (Master)
\
-- -- -- -- -- XX (Feature-branch)
Tout ce que je veux faire, c'est rebaser le dernier commit de Feature-branch
sur master et annuler Feature-branch
un commit.
-- -- -- -- -- XX (Master)
\
-- -- -- -- -- (Feature-branch)
Comment je fais ça?
Réponses:
Vous pouvez choisir XX à maîtriser.
Et supprimez le dernier commit de la branche de fonctionnalité avec git reset.
la source
cherry-pick
faisait apparaître comme s'ils avaient été supprimés de l'ancien emplacement et créés au nouvel emplacement. Je suppose que rebase aurait pris soin de cela, mais maintenant j'ai poussé en amont, donc je ne peux pas le tester. Dans tous les cas, méfiez-vous si vous avez une situation similaire.Feature-branch
vers l'origine, vous devrez le fairegit push -f origin Feature-branch
car votreFeature-branch
est maintenant considéré comme un commit derrière leorigin/Feature-branch
.Cela dit "rebase la plage de commits entre la dernière branche avant et la branche (c'est-à-dire XX commit) sur la pointe de la branche principale"
Une fois que cette
branch
astuce d' opération est déplacée lors de la validationXX
, vous voulez la réinitialiser avecQui dit "réinitialiser la pointe de la branche au commit avant son état précédent"
Un choix de cerises est donc une solution plus simple ...
la source
--onto
auparavant, donc je fais peut-être quelque chose de mal. BTW l'OP a dit rebase, mais il semble qu'il veuille faire un choix de cerise.C'est assez simple à faire en fait. La solution est de faire un rebase interactif et de «supprimer» tous les commits que vous ne voulez pas inclure dans le rebase.
git rebase -i <target_branch>
oùtarget_branch
est la branche sur laquelle vous souhaitez rebaserEnsuite, vous éditerez le fichier qui est ouvert et
pick
les commits que vous voulez etdrop
(oud
en bref) tous les commits que vous ne voulez pas apporter.la source
La réponse de @Charles est correcte. Quoi qu'il en soit, j'ai fini par l'utiliser tant de fois, surtout pour rebaser une configuration spécifique sur un projet
que je crée une nouvelle commande pour cela:
normalement, vous voulez compléter automatiquement les noms de branche pour cette commande, alors ajoutez-le en source de cette fonction (en ajoutant à .bashrc ou .profile):
git autocomplete le recherchera
vous pouvez utiliser cette commande comme ceci:
Lorsque vous divisez correctement les entités, les possibilités sont infinies.
Je suppose que c'est ce que couette gens aiment faire.
cette commande fonctionnera de toute façon avec tout sha / ref que vous fournissez:
la source
Voici une autre option:
Les commandes ressemblent à:
Ce n'est pas une commande de rebase non, mais c'est un rebase dans l'esprit.
la source