Aqui está o meu histórico da pasta 'somefolder'
$ git log somefolder
commit 89cd
More changes to somefolder
commit ef47a
Updating somefolder and other stuff
commit e095
Bugs fixed in somefolder
Eu quero reverter alguma pasta de volta para o commit 'Bugs corrigidos em alguma pasta ".
Já que o segundo commit envolveu mudanças fora de alguma pasta, eu não quero reverter este commit.
Eu acho que a maneira mais segura seria criar um diff / patch entre commit e095 e 89cd que se aplica apenas a alguma pasta, e então aplicar esse patch. Como eu posso fazer isso?
git reset e095 -- some/folder
vez disso--no-overlay
forgit checkout
para que os arquivos rastreados que não estão no commit do qual você está fazendo check-out sejam removidos.Você pode usar
git reset
para redefinir o índice, que também incluirá a remoção de arquivos que foram adicionados em commits mais recentes (git checkout
por si só não faz isso):No entanto
git reset
, não atualiza a cópia de trabalho e a--hard
opção não funciona com pastas. Então usegit checkout
para fazer a cópia de trabalho igual ao índice:e se você também deseja remover qualquer arquivo adicionado, você também precisa de fazer:
fonte