Вот моя история для папки somefolder
$ git log somefolder
commit 89cd
More changes to somefolder
commit ef47a
Updating somefolder and other stuff
commit e095
Bugs fixed in somefolder
Я хочу вернуть какую-то папку обратно к фиксации «Ошибки, исправленные в какой-то папке».
Поскольку вторая фиксация включала изменения вне какой-либо папки, я не хочу отменять эту фиксацию.
Я думаю, что самым безопасным способом было бы создать разницу / патч между фиксацией e095 и 89cd, которая применяется только к какой-то папке, а затем применить этот патч. Как я могу это сделать?
git reset e095 -- some/folder
вместо этого--no-overlay
для,git checkout
чтобы отслеживаемые файлы, которые не находятся в фиксации, из которой вы извлекаете, будут удалены.Вы можете использовать
git reset
для сброса индекса, который также будет включать удаление файлов, которые были добавлены в более поздние коммиты (самgit checkout
по себе этого не делает):Однако
git reset
не обновляет рабочую копию, и--hard
опция не работает с папками. Итак, используйте,git checkout
чтобы рабочая копия была такой же, как индекс:а затем, если вы также хотите удалить любые добавленные файлы, вам также необходимо сделать:
источник