Squash en SourceTree

Est-il possible de squash dans SourceTree? J'ai vu qu'apparemment, vous pouvez "glisser-déposer" s'engage afin de les écraser. Cependant, lorsque je le fais, il ne met en évidence que plusieurs commits.

25
demandé sur Miles 2013-08-21 07:20:08

5 réponses

Réponse Mise À Jour

SourceTree pour Windows

à partir de la version 1.5, vous pouvez maintenant faire des rebases interactives, qui vous permettront d'écraser.

SourceTree pour Mac

rebase Interactif a été disponible dans SourceTree pour Mac depuis la version 1.6 (l'emphase est mienne):

git rebase –interactive la commande vous permet de réorganiser vos commits après que vous les ayez créés (mais avant que vous ayez fait et maintenant vous pouvez le faire à L'intérieur de SourceTree. Combine (squash), plusieurs s'engage, ou re-commander, simplement en glissant et en laissant tomber. vous pouvez également modifier le message de propagation, ou éditer le contenu des propagations. Il suffit de cliquer avec le bouton droit de la souris sur un commit dans le log et de choisir ' Rebase children of <sha> interactivement ' pour lancer le processus.

Ancienne Réponse

apparemment, l'écrasement des commits est une caractéristique SourceTree version 1.6 Pour le Mac.

cependant, la fonctionnalité ne semble pas être disponible dans la version Windows de SourceTree, qui est actuellement encore à la version 1.0.8.

en utilisant la ligne de commande

vous avez encore l'option d'utiliser la ligne de commande pour écraser les propagations:

git rebase -i <sha-of-base-commit>

Dans le TODO liste, mettre un s (pour squash) à côté de commits to squash dans le précédent commit:

pick e953225 Add meow meow meow
s def892d Add master

pour en savoir plus sur la façon d'écraser les propagations en utilisant la ligne de commande, voir Écraser Commet, de la FREE en ligne Pro Git livre.

23
répondu 2014-05-06 18:41:37

À la courge de la direction générale dans la branche B:

  1. Créer une branche à partir de l'Un et de l'appeler en C.
  2. Réinitialiser C à B doux mode.
  3. découvrez B.
  4. Valider.

    1.              2.                          3.                             4.
        * <- [A][C]    * <- [A]                    * <- [A]                       * <- [A]
        |              |                           |                              |
        *              * o <- [C] with changes     * o <- [C][B] with changes     * * <- [C][B] committed
        |              |/                          |/                             |/
        * <- [B]       * <- [B]                    *                              *
        |              |                           |                              |
        :              :                           :                              :
    

Vous n'avez pas besoin de créer C si vous n'aurez pas besoin de garder la position de A.

je vous recommande d'ouverture gitk mis à part en faisant ceci parce que vous pouvez voir toutes les propagations détachées jusqu'à ce que vous fermiez. (J'aimerais voir cette générosité dans SourceTree)

au moins, refrog est votre ami.

6
répondu snipsnipsnip 2017-03-27 02:06:33

cliquez avec le bouton droit de la souris sur le parent commit et sélectionnez 'Rebase children of interactively'. Après cela, vous serez en mesure de glisser et de tomber à squash commits.

4
répondu alvarodoune 2014-08-29 13:42:49

Old school Écraser au sein de votre propre branche

cette réponse fonctionne avec la plupart des versions de Sourcetree sur n'importe quelle plate-forme, parce que j'utilise seulement les anciennes fonctionnalités. C'est assez simple, après que vous en pensez. Comme d'habitude, cela ne fonctionne qu'avant de rendre votre travail public. Je l'utilise pour créer des commits "tidy" dans le dépôt partagé, tout en commettant fréquemment dans mon propre dépôt local. Supposons que vous êtes dans la branche locale myfeature. Supposons que vous êtes plusieurs engage avant la branche origin/myfeature. Vous pouvez rester au sein de la branche myfeature tout au long de la procédure, de sorte que vous ne serez pas influencer le travail de quelqu'un d'autre.

Etape 1

faites un "reset current branch to this commit" sur la dernière commit publiée. C'est le commit l'étiquette origin/myfeature. Une réinitialisation mixte gardera toutes vos modifications. Assurez-vous de vérifier que votre réinitialisation est mixte. (Si vous faites une réinitialisation dure par inadvertance, vous perdrez votre travail...)

Etape 2

Etablissez vos changements (comme d'habitude). N'oubliez pas les fichiers que vous avez ajoutés ou supprimés en route!

Etape 3

Valider. Ecrivez un bon message de propagation qui résume tous vos propres messages (locaux) de propagation, parce qu'ils sont perdus.

Fait!

vous avez tout écrasé et nettoyé vos commits locaux à l'étape 1. Vous êtes toujours dans votre propre branche, donc vous n'avez rien influencé d'autre. Si vous ne vous sentez pas en sécurité, marquez votre dernier commit avant de faire quoi que ce soit d'autre. Juste pour sûr Keeping. De cette façon, vous pouvez toujours réinitialiser cette étiquette en cas de problème. Si tout se passe bien, retirez cette étiquette pour nettoyer votre historique de commit.

1
répondu Stef Joosten 2017-05-02 07:57:11

ils viennent d'ajouter le support pour "squash" dans la version Windows aussi.

SourceTree version 1.2 Pour Windows

-6
répondu mjlee 2013-09-23 17:02:01