Je pense que je suis confus sur la façon d'utiliser SourceTree GUI pour faire Git Rebase. J'ai deux branches "master" et "dev". Comme on le voit, les deux branches ont divergé. Je veux faire une rebase sur la branche "dev", en utilisant la ligne de commande, ce serait:
git checkout dev
git rebase master
Je me serais attendu à un clic droit "dev", et choisissez "Rebase les modifications actuelles sur dev". Je suppose que les changements actuels signifient "nouveaux commits sur maître". Mais choisir cette option semble n'avoir aucun effet. Quelles seraient les bonnes étapes?
Mais choisir cette option semble n'avoir aucun effet.
Oui, car les modifications actuelles sont l’une des branches actuelles, c’est dev
.
Rebaser dev
au-dessus de dev
signifie un non-op.
git checkout dev
git rebase master
Cela signifie que la branche actuelle est dev
: être rebasée sur master
.
Donc, dans SourceTree, vous devez cliquer avec le bouton droit de la souris sur master
(alors que dev
est extrait) et sélectionner:
Rebase current changes onto master
Howe ajoute dans les commentaires :
Nom actuel de "
rebase current changes onto [branch]
"est trompeur. Découvrez ceci discussion sur les améliorationsSRCTREE-1578
.Après m'être trouvée perplexe en essayant de mettre une branche de fonctionnalité à jour avec le développement et en échouant, je me suis rendu compte que l'élément de menu contextuel du volet de gauche intitulé "
rebase current changes onto $somebranch
"Fait en fait le contraire de ce que son nom suggère:
il rebase la branche actuelle vers l’état de $ une branche;
En d’autres termes, il rebase$somebranch
sur (ou dans) la branche actuelle, et non l’inverse. (Droite?)La préposition "
onto
" dans le texte actuel est trompeuse; cela implique que l'objet de la phrase ($somebranch
dans mon exemple) recevra les modifications.
En fait, c’est le contraire qui se produira.
L'absence du nom de la succursale actuelle ajoute à la confusion.Une reformulation qui améliore la structure de la phrase et inclut le nom de la branche concernée apporterait un gain considérable en termes de clarté.
Par exemple:rebase $currentbranch to head of $somebranch rebase $somebranch onto $currentbranch