Jogar fora os compromissos locais em Git
Devido a uma má selecção de cerejas, o meu repositório Git local está actualmente cinco compromissos à frente da origem, e não num bom estado. Eu quero me livrar de todos esses commits e começar de novo.
Obviamente, apagar meu diretório de trabalho e reclonar faria isso, mas baixar tudo do GitHub novamente parece um exagero, e não é um bom uso do meu tempo.
Talvez git revert
seja o que eu preciso, mas eu não'não quero acabar 10 comete antes da origem (ou mesmo seis), mesmo que o próprio código volte ao estado certo. Eu só quero fingir que a última meia hora nunca aconteceu.
Há algum comando simples que faça isso? Parece um caso de uso óbvio, mas eu'não estou encontrando nenhum exemplo disso.
Note que esta pergunta é especificamente sobre compromissos, não sobre:
- arquivos não rastreados
- alterações não encenadas
- mudanças encenadas, mas não comprometidas
Se o seu excesso de compromissos só for visível para si, pode simplesmente fazer "git reset - origem dura/` para voltar para onde está a origem. Isto irá redefinir o estado do repositório para o commit anterior, e irá descartar todas as alterações locais.
Fazendo um
git revert
faz com que novos se comprometam a remover compromissos antigos de uma forma que mantenha a história de todos sãos.Basta apagar a sua sucursal principal local e recriá-la assim:
Tente:
para repor a sua cabeça para onde quer que queira estar. Use o gitk para ver em qual compromisso você quer estar. Você pode fazer reset dentro do gitk também.