Git remove apenas push do último commit local
Pergunta
Fiz várias alterações na minha versão git local de um projeto Rails que não quero perder, mas, ao fazer isso, criei acidentalmente um fornecedor/pacote pasta no Git.
Assim que fiz o commit, percebi que fiz isso e fiz um git rm para a pasta (e adicionei a pasta ao gitignore) e fiz o commit novamente.No entanto, agora não posso enviar o original porque o pacote é muito grande.
O que eu preciso
- Como posso manter as edições (e novos arquivos) que fiz.
- Ao remover a pasta do pacote configurável do histórico do git
- E não enviar esse commit para eles, já que o diretório é muito grande
Tenho procurado por várias maneiras de reinicialização suave aqui, mas estou preso.
Solução
Você poderia fazer git reset --soft HEAD~x
onde x é o número de revisões que você deseja redefinir - 2 no seu caso e, em seguida, adicione o diretório ao arquivo gitignore e também remova-o da área de teste.
Outras dicas
Acho que encontrei a resposta:
Isso ocorre com bastante frequência.Alguém acidentalmente comete um enorme arquivo binário com um git impensado adicionar ., e você deseja removê-lo em toda parte.Talvez você tenha cometido acidentalmente um arquivo que continha um e você deseja tornar seu projeto de código aberto.filtro-ramificação é a ferramenta que você provavelmente deseja usar para limpar todo o seu histórico.Para Remova um arquivo chamado Senhas.txt de todo o seu histórico, você pode Use a opção --tree-filter para filtrar-ramificar:
git filter-branch --tree-filter 'rm -f /vendor/bundle' HEAD