Eu tenho um projeto no qual corri git init
. Após várias confirmações, fiz o git status
que me dizia que tudo estava atualizado e que não havia alterações locais.
Depois, fiz várias alterações consecutivas e percebi que queria jogar tudo fora e voltar ao meu estado original. Esse comando fará isso por mim?
git reset --hard HEAD
fonte
git checkout path/to/file
só irá reverter as alterações locaispath/to/file
git checkout .
egit reset [--hard HEAD]
não funcionou, tive que fazer umgit clean -fd
para reverter minhas alterações.git reset
não redefine suas alterações,git reset --hard
faz isso.Nota: Você também pode querer executar
Como
irá não remover arquivos untracked, onde, como git-clean irá remover todos os arquivos do diretório raiz tracked que não estão sob monitoramento git. AVISO - TENHA CUIDADO COM ISTO! É útil executar um teste a seco com o git-clean primeiro, para ver o que ele excluirá.
Isso também é especialmente útil quando você recebe a mensagem de erro
O que pode ocorrer ao fazer várias coisas, sendo uma atualização de uma cópia de trabalho quando você e seu amigo adicionaram um novo arquivo com o mesmo nome, mas ele o colocou no controle de origem primeiro e você não se preocupa em excluir sua cópia não rastreada .
Nessa situação, fazer uma execução a seco também ajudará a mostrar uma lista de arquivos que seriam substituídos.
fonte
Re-clonar
.gitignore
(como arquivos de compilação).gitignore
A seguir estão outros comandos que esqueço diariamente.
Limpar e redefinir
.gitignore
(como arquivos de compilação).gitignore
Limpar \ limpo
.gitignore
(como arquivos de compilação).gitignore
Redefinir
.gitignore
(como arquivos de compilação).gitignore
Notas
Caso de teste para confirmar todas as opções acima (use bash ou sh):
Veja também
git revert
para fazer novas confirmações que desfazem confirmações anterioresgit checkout
voltar no tempo para confirmações anteriores (pode ser necessário executar os comandos acima primeiro)git stash
igual aogit reset
anterior, mas você pode desfazê-lofonte
git clean -f -d -x
: se a opção -x for especificada, os arquivos ignorados também serão removidos. Isto pode, por exemplo, ser útil para remover todos products.- construção de docs GITSe você deseja reverter todas as alterações E estar atualizado com o mestre remoto atual (por exemplo, você acha que o HEAD mestre avançou desde que você o ramificou e seu push está sendo 'rejeitado'), você pode usar
fonte
origin
emgit reset --hard origin/master
(que funciona) - sem ele (iegit reset --hard
) nada parece ser alterado.Olhe para o git-reflog. Ele listará todos os estados de que se lembra (o padrão é 30 dias) e você pode simplesmente fazer o checkout do que deseja. Por exemplo:
fonte
git rebase -i
deu errado (acabando com alguns commits devido a um erro de edição). Graças a esta dica, estou de volta em bom estado!PERIGO À FRENTE: (leia os comentários. A execução do comando proposto na minha resposta pode excluir mais do que você deseja)
remover completamente todos os arquivos, incluindo diretórios que tive que executar
fonte
Depois de ler várias respostas e experimentá-las, encontrei vários casos extremos que significam que às vezes eles não limpam completamente a cópia de trabalho.
Aqui está o meu script bash atual para fazê-lo, que funciona o tempo todo.
Execute a partir do diretório raiz da cópia de trabalho.
fonte
error: pathspec 'HEAD' did not match any file(s) known to git.
git checkout HEAD
git reset --hard
reverte arquivos rastreados (em etapas ou não),git clean -f -d
remove arquivos não rastreados ,git checkout -- HEAD
por que precisamos disso?simplesmente execute -
removerá todas as suas alterações locais. e você também pode usá-lo mais tarde executando -
fonte
git stash pop
removeria automaticamente a alteração armazenada no topo da lista para você #git stash drop
para remover o último estado oculto sem aplicar à cópia de trabalho.Eu encontrei um problema semelhante. A solução é usar
git log
para procurar qual versão do commit local é diferente do remoto. (Por exemplo, a versão é3c74a11530697214cbcc4b7b98bf7a65952a34ec
).Em seguida, use
git reset --hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec
para reverter a alteração.fonte
Eu procurei por um problema semelhante,
Queria jogar fora os commits locais:
O mesmo aconteceu abaixo:
Verifica:
agora as confirmações locais são perdidas, de volta ao estado inicial clonado, ponto 1 acima.
fonte
Você pode não necessariamente querer / precisar esconder seus arquivos / trabalho em seu diretório de trabalho, mas simplesmente se livrar deles completamente. O comando
git clean
fará isso por você.Alguns casos de uso comuns para isso seriam remover cruft gerado por mesclagens ou ferramentas externas ou remover outros arquivos para que você possa executar uma construção limpa.
Lembre-se de que você deve ter muito cuidado com esse comando, pois ele foi projetado para remover arquivos do diretório de trabalho local que NÃO SÃO TRACKED. se você mudar de idéia repentinamente após executar este comando, não há como voltar atrás para ver o conteúdo dos arquivos que foram removidos. Uma alternativa mais segura é executar
git stash --all
que removerá tudo, mas salvará tudo em um esconderijo. Esse estoque pode ser usado posteriormente.
No entanto, se você realmente deseja remover todos os arquivos e limpar seu diretório de trabalho, execute
git clean -f -d
Isso removerá todos os arquivos e subdiretórios que não possuem itens como resultado do comando. Uma coisa inteligente a se fazer antes de executar o
git clean -f -d
comando é executarque mostrará uma prévia do que será removido após a execução
git clean -f -d
Então, aqui está um resumo de suas opções, da mais agressiva à menos agressiva
Opção 1 : remova todos os arquivos localmente (mais agressivo)
Opção 2 : visualizar o impacto acima (visualização mais agressiva)
Opção 3 : Esconder todos os arquivos (menos agressivo)
fonte
Tente isso para reverter todas as alterações não confirmadas na ramificação local
Mas se você vir um erro como este:
Você pode navegar para a pasta '.git' e excluir o arquivo index.lock:
Por fim, execute novamente o comando:
fonte
Esta pergunta é mais sobre redefinição / reversão mais ampla do repositório, mas, se você estiver interessado em reverter alterações individuais - adicionei resposta semelhante aqui:
https://stackoverflow.com/a/60890371/2338477
Respostas às perguntas:
Como reverter alterações individuais com ou sem alterações preservadas no histórico do git
Como retornar à versão antiga para reiniciar do mesmo estado
fonte