Estou trabalhando em um branch (ou seja design
) e fiz uma série de alterações, mas preciso descartar todas e redefini-lo para corresponder à versão do repositório. Pensei git checkout design
em fazer isso, mas só me diz que já estou no branch design
e que tenho 3 arquivos modificados.
Como descartaria essas alterações e obteria a ramificação como está agora no servidor remoto?
git reset --hard HEAD^
git reset --hard HEAD^
realmente deveria ser a resposta aceita. OP não estava perguntando sobre outros ramos ...fonte
git rm [branch name].diff
Se você não deseja nenhuma alteração
design
e definitivamente deseja que corresponda apenas a um branch remoto, você também pode simplesmente excluir o branch e recriá-lo:fonte
@Will, git immersion é um tutorial git muito bom e simples. ele mostrará como desfazer alterações para os seguintes casos: unstaged, staged e commited. laboratórios 14-18
fonte
Ruby
ser instalado ... o que nem sempre parece uma escolhaQuando você quiser descartar mudanças em seu branch local, você pode esconder essas mudanças usando o comando git stash.
git stash save "some_name"
Suas alterações serão salvas e você pode recuperá-las mais tarde, se quiser, ou pode excluí-las. Depois de fazer isso, seu branch não terá nenhum código não confirmado e você pode puxar o código mais recente de seu branch principal usando git pull.
fonte
Na raiz de origem:
git reset ./ HEAD <--un-stage any staged changes git checkout ./ <--discard any unstaged changes
fonte
Método REVERSÍVEL para descartar todas as alterações:
Eu encontrei essa questão depois de fazer uma fusão e esquecer de desenvolver o checkout imediatamente depois. Você adivinhou: comecei a modificar alguns arquivos diretamente no master . D'Oh! Como minha situação dificilmente é única (todos nós já fizemos isso, não fizemos; ->), vou oferecer uma maneira reversível que usei para descartar todas as alterações para obter o master parecendo se desenvolver novamente.
Depois de fazer um
git diff
para ver quais arquivos foram modificados e avaliar o escopo do meu erro, executei:Depois de armazenar todas as alterações, elas foram limpas em seguida. Todas as alterações feitas nos arquivos com erro no mestre foram eliminadas e a paridade foi restaurada.
Digamos que agora eu queira restaurar essas alterações. Eu posso fazer isso. O primeiro passo é encontrar o hash do stash que acabei de limpar / largar:
Depois de aprender o hash, restaurei com sucesso as alterações não confirmadas com:
Eu realmente não queria restaurar essas alterações, só queria validar se poderia recuperá-las, então as apaguei novamente.
Outra opção é aplicar o stash a um branch diferente , em vez de limpar as alterações. Portanto, em termos de limpar as alterações feitas ao trabalhar no branch errado,
stash
você tem bastante flexibilidade para se recuperar de seu problema.De qualquer forma, se você deseja um meio reversível de limpar as alterações em um branch, o anterior é um modo menos perigoso neste caso de uso.
fonte
git checkout -f
Isso é suficiente para sua pergunta. A única coisa que é, uma vez feito, está feito. Não há como desfazer.
fonte