J’ai un tas de validations sur mon dépôt local qui sont thématiquement similaire. Je tiens à les combiner en une seule validation avant de pousser vers le haut à une distance. Comment puis-je le faire ? Je pense que `` cela, mais je ne peux pas donner un sens les docs.
- Squash mon dernier X s'engage à l'aide de Git (5 réponses )
Réponses
Trop de publicités?Ce que vous voulez faire référence à "écraser" dans git. Il ya beaucoup d'options quand vous faites cela (trop nombreux?) mais si vous voulez juste pour fusionner tous vos unpushed s'engage dans un seul commettre, faire ceci:
git rebase -i origin/master
Cela permet d'ouvrir votre éditeur de texte (-i
"interactive") avec un fichier qui ressemble à ça:
pick 16b5fcc Code in, tests not passing
pick c964dea Getting closer
pick 06cf8ee Something changed
pick 396b4a3 Tests pass
pick 9be7fdb Better comments
pick 7dba9cb All done
Changer tout l' pick
de squash
sauf le premier:
pick 16b5fcc Code in, tests not passing
squash c964dea Getting closer
squash 06cf8ee Something changed
squash 396b4a3 Tests pass
squash 9be7fdb Better comments
squash 7dba9cb All done
Enregistrez votre fichier et quittez votre éditeur. Puis un autre éditeur de texte s'ouvrira pour vous permettre de combiner les messages de validation de tous les commits dans un grand message de commit.
Voila! Googler "git écraser" vous donnera les explications de toutes les autres options disponibles.
Vous pouvez faire cela avec git rebase -i
, passant dans la révision que vous souhaitez utiliser en tant que "root":
git rebase -i origin/master
ouvrir une fenêtre de l'éditeur indiquant tous les changements que vous avez fait depuis le dernier commit en origin/master
. Vous pouvez rejeter les livraisons, les courges s'engage dans un seul commit, ou modifier précédente s'engage.
Il y a quelques ressources qui peuvent sans doute expliquer cela dans une meilleure façon, et de montrer quelques autres exemples:
http://book.git-scm.com/4_interactive_rebasing.html
et
http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
sont les deux premières bonnes pages que j'ai pu trouver.
Vous voudrez probablement utiliser Un rebasage interactif, qui est décrite en détail dans ce lien.
Vous trouverez d’autres bonnes ressources si vous recherchez « git rebase interactif ».