11
votes

Dois-je effectuer un commit après une Rebase?

Je viens de rebaser une branche de fonctionnalité sur une autre branche de fonctionnalité (en vue de la repassage de tout à la tête de mon maître), et cela impliquait de nombreuses résolutions de fusion délicates.

La REBASE est-elle automatiquement enregistrée comme un commettre quelque part?

Où vivent ces modifications? Je ne vois rien dans Gitk ou Git Journal --oneline .

(même question pour quand je fusionne ma branche après la reconditionnement.)


0 commentaires

3 Réponses :


6
votes

Oui, rebasses réussies et fusionne les commits. Ils ne feront qu'un commettre d'entre eux sont des conflits qui doivent être résolvés, mais la production de la Rebase (ou fusion) vous dira que cela s'est passé et comment le résoudre.

Pour une Rebase, il vous suffit de résoudre les conflits dans l'index puis de Git Rebase --Continue .

Pour une fusion, vous devez faire le commit ( Git commettre ), mais le fait que c'est une fusion sera mémorisé et un message de validation par défaut approprié sera fourni pour que vous puissiez modifier. < / p>


1 commentaires

C'est la réponse dont j'avais besoin - courte et au point. J'apprécie les efforts plus longs pour leur valeur ajoutée, mais ils devraient vraiment inclure au moins un texte comme celui ci-dessus au début. Quand je suis plus audacieux, je suppose que je vais juste commencer à modifier des réponses afin que la réponse classée ait également une "réponse" dedans "de toute façon, je voulais vous remercier de répondre à la façon dont j'en ai répondu.



10
votes

Rebase se déplace commet sur une autre branche. Si un engagement qui est déplacé des causes de conflit de fusions, ce commettre est modifié pour refléter la résolution de la fusion.

Le but de la Rebase fait que vos commits se tournent comme si elles étaient des changements à la succursale que vous rentriez. La manière la plus logique est donc d'intégrer des conflits de fusion à ces engagements. Aucun engagement supplémentaire n'est requis ainsi.

Fusionne est différent, car c'est une action explicite de la fusion de branches divergées ensemble. Aucun engagement dans chacune des branches n'est changé. La résolution des conflits est reflétée dans la fusion commit.


0 commentaires

2
votes

Dans les vieux jours (2006, avant 1.5.3 et Son manuel d'utilisation ), git rebase était présenté comme si :

Un cas particulier de Cherry-cueillette est si vous voulez déplacer une branche entière à une nouvelle "base" commit.
Ceci est fait par git-rebase .
Vous spécifiez la succursale à déplacer (par défaut tête ) et où le déplacer (pas de valeur par défaut), et:

  • git cherry-choisies chaque patch de cette branche,
  • s'applique en haut de la cible,
  • et déplace le Refs / Têtes / Pointeur sur les engagements nouvellement créés.

    Donc, par définition, les commits seront faits (et aucun commis doit être effectué)

    Un cas particulier de Rebase est lorsque vous souhaitez diviser votre travail, en mouvement (et recréer de nouveaux ) commettre.
    Du même tutoriel (comme illustration de ne pas avoir besoin d'aucune autre commission après une Rebase):

    Supposons que vous ayez mélangé le développement de deux caractéristiques de la tête actuelle, une succursale appelée "dev". xxx

    Vous voulez les diviser en "Dev1" et "Dev2". En supposant que tête est un maître de succursale, vous pouvez soit regarder à travers xxx

    ou simplement obtenir une liste brute des commits avec xxx

    De toute façon, supposons que vous découvriez une liste de commettre que vous souhaitez dans dev1 et créer cette branche: xxx

    Vous pouvez utiliser l'autre moitié de la liste que vous avez éditée pour générer la branche Dev2 , mais si vous n'êtes pas sûr si vous avez oublié quelque chose ou que vous n'avez tout simplement pas envie de faire ce travail manuel , alors vous pouvez utiliser Git-Rebase pour le faire pour vous. xxx

    Ceci trouvera toutes les correctifs qui sont dans dev et non dans dev1 , appliquez-les en haut de la maîtrise et appelez le résultat Dev2 . xxx


1 commentaires

Wow! c'est-à-dire qui souffle, dans les deux sens (incroyablement puissant et difficile de me faire tourner la tête)