Как вернуть часть коммита?

В истории нашего репо есть коммит, толчок и т.д. У меня есть SHA, и я хотел бы запустить эквивалент git revert /one/folder/* THESHAID, но git revert не выглядит так, как будто он может изменить только определенную папку.

Есть ли способ воспроизвести этот функционал?


person Damon    schedule 17.04.2014    source источник
comment
Вы можете вручную отредактировать патч, чтобы он содержал изменения только в нужном каталоге, а затем отменить патч (patch -R -p1 ‹patch›) и зафиксировать.   -  person brokenfoot    schedule 18.04.2014


Ответы (1)


Это достаточно странно, поэтому неудивительно, что для этого нет кнопки, особенно когда метод грубой силы настолько прост:

git revert that_commit           # do the whole revert
git reset --hard HEAD^           # in what turns out to have been a throwaway commit
git checkout HEAD@{1} -- one/folder   # and just take what you want of the results
person jthill    schedule 18.04.2014
comment
Я только что проголосовал за то, чтобы закрыть это как дубликат, связанный ответ @vcsjones концептуально чище, но более неуклюж в исполнении, выбирайте сами. - person jthill; 18.04.2014
comment
Я проверил другой ответ ... логика этих команд имеет для меня гораздо больше смысла ... - person Damon; 18.04.2014