De combien de commits avez-vous besoin pour revenir en arrière et sélectionner? S'il ne s'agit que d'un seul, prenez peut-être une branche juste avant, extrayez le fichier que vous avez validé et utilisez-le git add -p
pour l'ajouter comme vous le souhaitez. Ensuite, vous pouvez revenir à l'endroit où vous étiez et extraire le fichier de votre branche temporaire.
C'est:
git checkout -b temp troublesome-commit^
git checkout troublesome-commit -- path/to/file
git add -p path/to/file
git commit -c troublesome-commit
git checkout @{-1}
git checkout temp -- path/to/file
git commit path/to/file
git branch -D temp
D'autres alternatives incluent revenir en arrière et éditer le commit avec git rebase -i
(marquer le commit comme edit
, puis faire un git reset HEAD^
et refaire le commit lorsqu'il est replacé dans le shell).
Si les modifications que vous devez sélectionner sont réparties sur une série de validations, il peut être préférable de les extraire sous forme de patchs (ou d'un patch les couvrant tous) et d'éditer manuellement le patch, en supprimant les modifications que vous souhaitez conserver, et introduire le résidu dans git apply --reverse
.