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)?

Foi útil?

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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top