Voici mon historique pour le dossier 'somefolder'
$ git log somefolder
commit 89cd
More changes to somefolder
commit ef47a
Updating somefolder and other stuff
commit e095
Bugs fixed in somefolder
Je veux ramener un dossier au commit «Bogues corrigés dans un dossier».
Puisque le deuxième commit impliquait des changements en dehors d'un dossier, je ne veux pas revenir sur ce commit.
Je suppose que le moyen le plus sûr serait de créer un diff / patch entre le commit e095 et 89cd qui s'applique uniquement à un dossier, puis d'appliquer ce patch. Comment puis je faire ça?
git reset e095 -- some/folder
place--no-overlay
forgit checkout
pour que les fichiers suivis qui ne sont pas dans le commit que vous extrayez soient supprimés.Vous pouvez utiliser
git reset
pour réinitialiser l'index, ce qui inclura également la suppression des fichiers qui ont été ajoutés dans des commits plus récents (git checkout
ne le fait pas seul):Cependant,
git reset
ne met pas à jour la copie de travail et l'--hard
option ne fonctionne pas avec les dossiers. Alors utilisezgit checkout
pour rendre la copie de travail identique à l'index:puis si vous souhaitez également supprimer les fichiers ajoutés, vous devez également faire:
la source