Je viens de lire modifiant un seul fichier dans un passé, s'engager dans git , mais malheureusement, la solution retenue 'trie' le commet, ce qui n'est pas ce que je veux. Alors, voici ma question:
Chaque maintenant et puis, j'ai remarqué un bug dans mon code tout en travaillant sur un (indépendantes) de fonctionnalité. Un rapide git blame
révèle alors que le bug a été introduit un peu commet il y a peu (j'ai commis beaucoup, donc en général c'est pas la plus récente commit qui a introduit le bug). À ce stade, j'ai l'habitude de le faire:
git stash # temporarily put my work aside
git rebase -i <bad_commit>~1 # rebase one step before the bad commit
# mark broken commit for editing
vim <affected_sources> # fix the bug
git add <affected_sources> # stage fixes
git commit -C <bad_commit> # commit fixes using same log message as before
git rebase --continue # base all later changes onto this
Cependant, cela arrive si souvent que la séquence ci-dessus est plus ennuyeux. Surtout le "rebase interactif" est ennuyeux. Est-il un raccourci pour la séquence ci-dessus, ce qui me permet de modifier l'arbitraire, de commettre dans le passé avec la mise en scène des changements? Je suis parfaitement conscient que cela change l'histoire, mais je suis en train de faire des erreurs si souvent que j'aimerais vraiment avoir quelque chose comme
vim <affected_sources> # fix bug
git add -p <affected_sources> # Mark my 'fixup' hungs for staging
git fixup <bad_commit> # amend the specified commit with staged changes,
# rebase any successors of bad commit on rewritten
# commit.
Peut-être un smart script qui peut réécrire s'engage à l'aide d'outils de plomberie?