Voici un exemple non interactif rebase
approche.
Cela nécessite un commit supplémentaire (et ne permet donc pas de "réécrire un commit précédent" comme demandé par le PO), mais je trouve cela plus facile à retenir.
État initial :
* e834111 (HEAD -> master) do something that depends on file x
* 6dde62a do stuff, forget to add file x
...
Etape 1 - vérifier une nouvelle branche temporaire au commit qui aurait dû inclure le fichier ( git checkout -b temp 6dde
):
* e834111 (master) do something that depends on file x
* 6dde62a (HEAD -> temp) do stuff, forget to add file x
...
Étape 2 - add
le fichier manquant et commit
:
* 50d1412 (HEAD -> temp) add file x
| * e834111 (master) do something that depends on file x
|/
* 6dde62a do stuff, forget to add file x
...
Étape 3 - vérifier la branche originale et rebase
sur temp
:
* dd6f2dd (HEAD -> master) do something that depends on file x
* 50d1412 (temp) add file x
* 6dde62a do stuff, forget to add file x
...
Étape 4 - supprimer la branche temporaire ( git branch -d temp
)
Note : Ceci peut aussi être fait sans créer de branche temporaire, en utilisant par exemple git checkout 6dde
suivi d'un commit
y rebase
sur la tête détachée.