web-dev-qa-db-fra.com

git rebase en utilisant sourcetree

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

enter image description here

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?

52
python152

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éliorations SRCTREE-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
76
VonC