J'utilise Git Extensions depuis un moment (c'est génial!) Mais je n'ai pas trouvé de réponse simple à ce qui suit:
Parfois, lorsque vous tapez un message de validation, vous pouvez créer une faute de frappe. Mon ami m'a montré comment résoudre le problème de la manière suivante (dans Git Extentions):
Clic droit sur le commit> Avancé> commit de fixup
Ensuite, je coche simplement la case "Modifier" et réécris mon message et le tour est joué! Mon message de commit est corrigé.
Cependant cette autre option "Squash commit" ... Je me suis toujours demandé ce que ça faisait?!
Ma question est:
Quelqu'un pourrait-il simplement m'expliquer quelle est la différence exacte entre commit Squash et commitup fix dans Extensions Git/Git? Ils ont l'air un peu ... "similaires" pour moi:
Je ne sais pas ce que Git Extensions en fait, mais git rebase
a une option pour écraser ou corriger automatiquement les commits avec squash! ou réparer! préfixes, respectivement:
--autosquash, --no-autosquash
When the commit log message begins with "squash! ..." (or "fixup!
..."), and there is a commit whose title begins with the same ...,
automatically modify the todo list of rebase -i so that the commit
marked for squashing comes right after the commit to be modified,
and change the action of the moved commit from pick to squash (or
fixup).
La différence entre squash et fixup réside dans le fait que lors de la modification de la base, l'opération squash
vous invitera à combiner les messages de la validation d'origine et de la validation squash, alors que l'opération fixup
conservera le message d'origine et ignorer le message de la validation de correction.
En termes simples, lors du changement de base d'une série de commits, chaque commit marqué comme un squash
vous donne la possibilité d'utiliser son message dans le cadre d'un message pick
ou reword
commit.
Lorsque vous utilisez fixup
, le message de cette validation est supprimé.
De doc de git-rebase :
Si vous souhaitez plier deux commits ou plus en un, remplacez la commande "pick" pour le deuxième et les prochains commits par "squash" ou "fixup". Si les commit ont des auteurs différents, le commit plié sera attribué à l'auteur du premier commit. Le message de validation suggéré pour la validation pliée est la concaténation des messages de validation de la première validation et de ceux avec la commande "squash", mais les messages de validation des validations avec la commande "fixup" sont omis.
J'ai bricolé avec des extensions git et je ne pouvais pas l'obtenir pour écraser plusieurs commits en un. Pour ce faire, j'ai dû recourir à la ligne de commande et trouvé this post utile
git rebase -i Head~2
C'est une base interactive, et notez ce qui suit: