140 votes

Modifier un commit qui n'était pas le précédent

Souvent, j'aurai un flux de travail semblable à celui-ci:

  1. Valider les modifications dans un groupe de fichiers
  2. Valider les modifications dans un groupe de fichiers différent
  3. Réalisez que j'ai raté certaines modifications du premier commit
  4. Malédiction

Je ne peux pas utiliser git commit --amend car ce n'est pas le dernier engagement à modifier. Quelle est la meilleure façon d'ajouter des modifications au premier commit sans toucher au second?

184voto

Daenyth Points 11297

Vous pouvez utiliser git rebase pour les résoudre. Exécutez git rebase -i sha1~1 où sha1 est la validation de hachage de celui que vous voulez modifier. Trouver la validation que vous souhaitez modifier et de remplacer "ramasser" avec "modifier" comme décrit dans les commentaires de la rebase de l'éditeur. Lorsque vous continuer à partir de là, vous pouvez modifier ce commit.

Notez que cela va changer le sha1 de s'engager comme tous les enfants, en d'autres termes, il réécrit l'histoire à partir de ce point en avant. Vous pouvez casser les référentiels de le faire, mais si vous n'avez pas poussé, c'est pas un big deal.

-6voto

jetru Points 634

Si vous n'avez pas poussé en amont, vous pouvez:

 git format-patch -1
git reset --hard HEAD~1
//change
git commit --amend
git am patchname
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X