web-dev-qa-db-fra.com

Git: Comment réutiliser / conserver les messages de commit après 'git reset'?

En tant qu'utilisateur Git, je rencontre régulièrement la situation, que je dois retravailler un ou plusieurs commits d'une manière qui ne rentre pas dans --amend Ou rebase -i Avec des commits de correction. En général, je ferais quelque chose comme

git reset HEAD~1
# hack, fix, hack
git commit -a
# argh .. do I need to retype my message?

Je prends des messages de commit composés raisonnables assez sérieux. Ils contiennent généralement un texte plus grand avec des références et des justifications pour le changement. Jusqu'à présent, je suis assez ennuyé par le long processus de récupération de mon ancien message de validation via un processus non trié git reflog, git log Et un copier-coller.

Y a-t-il un meilleur moyen de résoudre ce problème? Et comment le ferait-il si mon comprend plus d'un commit?

Edit: Après un peu de réflexion à ce sujet, je pense que ce que je recherche, ce sont git stash - comme une fonctionnalité pour les messages de validation où les commits de correction/modification ne sont pas appropriés.

83
Benjamin Schmid

Après un git reset, ce one-liner peut le faire:

git commit --reuse-message=HEAD@{1}

ou encore plus court:

git commit -C HEAD@{1}

Vous pouvez utiliser les autres options données par @ user2718704 .

109
ibizaman

Lorsque vous exécutez la commande "git commit", vous devez vérifier les options suivantes,

Réutilliser,

--reuse-message=<commit>

Pour modifier lors de la réutilisation,

--reedit-message=<commit>

Pour changer l'auteur,

--reset-author
35
user2718704

Pourquoi réinitialiser si vous pouvez pirater, corriger, pirater, puis exécutez simplement git commit --amend --no-edit; ainsi, en conservant votre message de validation d'origine.

Pour le faire fonctionner pour plusieurs validations, créez simplement une validation temporaire avec vos dernières modifications, puis utilisez une rebase interactive pour écraser la validation précédente (contenant le bon message de validation) avec la nouvelle temporaire, en conservant le message de validation de l'ancienne validation.

7
mart1n

Vous pourriez envisager git commit --reset-author -c <commit>, pour réutiliser le message de validation avec l'édition et l'heure actuelle.

2
Joe