Como faço para reverter um pedaço específico de um compromisso no Git?
-
27-09-2019 - |
Pergunta
Gostaria de saber se existe uma maneira de reverter rapidamente um pedaço específico de um compromisso.
Eu posso gerar um diff
entre dois compromissos ou HEAD
para ver a diferença.
Como faço para reverter apenas um desses pedaços (ou melhor ainda, um conjunto de pedaços específicos)?
Solução
git checkout -p $REF -- path/to/file
Onde $REF
é um nome de referência ou ID de confirmação que especifica a confirmação da qual você deseja retirar o estado do arquivo. Por exemplo, para reverter seletivamente as alterações feitas no último compromisso, use HEAD^
.
Outras dicas
git difftool $REF -- /path/to/file
Onde $REF
é um nome de referência ou ID de confirmação que especifica a confirmação da qual você deseja retirar o estado do arquivo. Por exemplo, para reverter seletivamente as alterações feitas na última confirmação, use a cabeça^.
Esta pergunta já foi respondida por @cdhowie, mas acho um pouco mais agradável usar um difftool interativo como meld
Restaurar seletivamente Hunks/Lines of Code, especialmente se houver um bug recém-introduzido e difícil de encontrar no código.
Para recuperar um arquivo excluído de uma confirmação anterior, usei a resposta aqui:
Encontre e restaure um arquivo excluído em um repositório Git
git checkout <deleting_commit>^ -- <file_path>