12
votes

Comment personnaliser le format de Git Rebase -Interactive STOP?

J'utilise Git pour mon travail local (et j'adore ça tellement), et je suis un flux de travail similaire à celui décrit dans Cet article . Donc, fondamentalement, lorsque vous commencez sur une nouvelle fonctionnalité, je crée une succursale, passez par le piratage habituel puis commettre le cycle, et quand je pense que j'en ai fini, je l'ai écrasé dans un seul commit en utilisant Git Rebase --interactive maître code>, et je finis toujours par éditer la multitude de messages de validation en quelque chose qui ressemble à l'exemple de l'article, reproduit ici:

[#3275] User Can Add A Comment To a Post

* Adding Comment model, migrations, spec
* Adding Comment controller, helper, spec
* Adding Comment relationship with Post
* Comment belongs to a User
* Comment form on Post show page


2 commentaires

Vous devriez envisager de changer la réponse acceptée, car GIT a ajouté un soutien à cela maintenant


@Joakim Comme indiqué ci-dessous, la fonctionnalité GIT 2.6 ne correspond pas exactement à l'OP, de sorte que la réponse de JEfromi est debout.


3 Réponses :


4
votes

Il n'y a aucun moyen (à court de piratage de la source) pour modifier le modèle de message de squash, je ne pense pas. Cependant, vous avez quelques options:

  • Utilisez une commande de journal git pour obtenir la liste restreinte, quelque chose comme `Git Log --Pretty =" *% s "COMMIT-1..COMMIT-2 pour obtenir vos balles. À Linux, il est très possible de le faire dans votre éditeur - je ne sais pas comment cela fonctionne avec MSYSGIT.

  • Avez-vous votre éditeur faire le travail pour vous! Je ne sais pas ce que votre éditeur est, alors je ne peux donc pas vraiment vous dire quoi faire, mais ce serait certainement très possible dans Vim. (L'idée étant: rechercher / # ceci est le. * COMMIT MESSAGE / , supprimez une ligne de couple, conservez-en un, supprimez-le jusqu'au prochain commentaire)

    En outre, ce n'est pas ce que vous voulez dans ce cas, probablement, mais dans des versions assez récentes de GIT, il y a un identifiant fixup que vous pouvez utiliser au lieu de courge - il fait la même chose, mais Il élimine le message de valid, donc si vous avez un commettre avec le message réel, alors dix correctifs, vous pouvez simplement les marquer à toutes les modifications et ne pas avoir à supprimer leurs messages jetables.


6 commentaires

Je suis d'accord. +1. Pour plus d'informations sur Fixup (et Autosquashing), voir Stackoverflow.com/questions / 2302736 / Garning-Git-Checkins / ...


Frais! Je vais devoir mettre à jour MSYSGIT et donner ce correctif et un tel coup. :)


J'ai commencé à utiliser Vim pour mon édition de texte Shenanigans, alors je suppose que je vais avec la porte # 2!


Cette réponse est maintenant incorrecte car la prise en charge de cela a été ajoutée à GIT.


@Joakim qui change le format d'instruction affiché dans Interactive Rebase. Mais cela modifie-t-il aussi les messages de validation résultants? (Je l'ai essayé, et cela ne semblait pas - j'ai vu les instructions modifiées, mais le message de combinaison de courge d'origine.)


@Jefromi ah, j'avais mal compris la question. Je n'ai pas réalisé que c'était le format de la commission écrasée La question était à propos. Je suppose que parce que le terme "fusion" a été utilisé à la place, ce qui est autre chose dans Git.



0
votes

Vous pouvez faire un -amend quand vous le souhaitez. Vous pouvez commander en commis de votre précédent, vous vous engagez que vous souhaitez changer et modifier cela.


1 commentaires

Yup, et j'utilise --AMendez un peu parce que j'ai des doigts de graisse, apparemment. :) Mais je n'ai pas besoin de --amendre mes engagements écrasés pour modifier le message de validation résultant; Je viens de le formater dans l'éditeur de texte qui apparaît après avoir affecté Pick / Edit / Squash à chaque commit. J'ai clarifié ma question à rendre compte de cela.



10
votes

À partir Git 2.6+ (Q3 2015), il y aura effectivement un moyen de configurer git rebase -i message de commit.

Voir commit 16cf51c (13 juin 2015) par Michael Rappazzo ( Rappazzo code>) .
(issu de la fusion par Junio ​​Hamano C - gitster code> - commit 9f56db7 , 3 août 2015) sup> p>

git-rebase--interactive.sh code>: option de configuration ajouter pour le format d'instruction personnalisée h1>

Une option de configuration ' rebase.instructionFormat code>' peut remplacer la valeur par défaut ' oneline code>' format de la liste d'instructions de rebasage. P>

Depuis la liste est analysée à l'aide de la gauche, marque droite ou limite plus le SHA1, ils sont préfixé au format d'instruction. P> Blockquote>

Vous allez bientôt avoir une nouvelle config: p>

git config --add rebase.instructionFormat "[%an @ %ar] %s"


2 commentaires

Quelqu'un m'a dit que ma réponse était tort maintenant, alors j'avais un coup d'œil à cela - il semble que cela n'affecte qu'à affecter l'affichage au sein de la Rebase interactive, et non les messages de validation qui en résultent. Je l'ai essayé avec votre exemple de format de format et j'ai bien vu les informations de l'auteur dans mon éditeur, mais une fois que je l'ai dit de courter, le message de validation de modèle résultant était toujours l'habituel.


@Jefromi Bon point. J'ai inclus votre commentaire dans la réponse pour plus de visibilité. Et j'ai ajouté un commentaire à la question indiquant que votre réponse est toujours celle.