Como desfazer o último comprometimento no git

Como desfazer o último comprometimento no git
Um fluxo de trabalho comum no Git é que você faz alterações no seu projeto, adicione as alterações à área de estadiamento, compromete as alterações, faça novas alterações, encene as alterações, comprometa as alterações e continua e continua. Mas e se você cometeu por engano suas mudanças? Bem, não tema. Você sempre pode desfazer seu último compromisso no git. Neste artigo, vou mostrar como desfazer o último compromisso no Git. Então vamos começar.

Configurando um repositório Git de teste:

Nesta seção, vou clonar um do meu repositório do GitHub no meu computador para configurar um repositório de teste para este artigo. Se você quiser acompanhar, então você também pode fazê -lo. Se você tem seu próprio repositório Git para trabalhar, então ótimo! Você pode usá -lo também.

Para clonar um do meu repositório do GitHub (https: // github.com/dev-shovon/my-project), execute o seguinte comando:

$ git clone https: // github.com/dev-shovon/my-project undo_commit_demo

O repositório do GitHub deve ser clonado em undo_commit_demo/ diretório.

Agora, navegue para o undo_commit_demo/ diretório da seguinte maneira:

O compromisso que você deseja desfazer pode estar em um ramo diferente como o meu. Eu quero desfazer o último compromisso do ou seja, Fix filial. Então, eu tenho que puxar o ramo ou seja, Fix Do meu repositório do GitHub.

Você pode puxar o ou seja, Fix ramo do github da seguinte maneira:

$ Git Pull Origin IE-Fix

OBSERVAÇÃO: Aqui, ou seja, Fix é o nome da filial.

O ou seja, Fix o ramo deve ser puxado.

Agora, consulte a filial (no meu caso, ou seja, Fix) do qual você deseja desfazer o último compromisso da seguinte maneira:

$ git checkout, ou seja, Fix

Como você pode ver, o último compromisso do ou seja, Fix ramo é AEC00F3. Nas próximas seções, vou mostrar -lhe maneiras de desfazer o último compromisso no seu repositório Git.

Desfazer o último comprometimento e mantenha as alterações:

Uma maneira de desfazer a última confirmação é o uso de redefinição suave no seu repositório Git. O que isso faz é que o último compromisso é removido e as alterações que você fez nesse compromisso é adicionado à área de estadiamento do seu repositório Git. Dessa forma, se você quiser consertar alguma coisa, pode modificar os arquivos e adicionar um novo compromisso.

Como você pode ver, o último compromisso no meu ou seja, Fix ramo é AEC00F3.

$ git log --oneeline

Além disso, minha área de estadiamento está limpa.

$ git status

Agora, para remover ou desfazer a última confirmação, execute o seguinte comando:

$ git Reinicia -cabeça macia ~ 1

Como você pode ver, o compromisso AEC00F3 se foi.

$ git log --oneeline

Além disso, o arquivo que modifiquei no último compromisso está na minha área de estadiamento.

$ git status

Agora, você pode modificar ainda mais os arquivos, corrigir os erros que cometeu e cometer as alterações novamente.

Desfazer a última confirmação e remova as alterações:

Se o último compromisso que você deseja remover for inútil para você, você pode considerar uma redefinição difícil no seu repositório Git. O que a redefinição é, ele remove o último compromisso como antes. Mas, também remove todas as mudanças que você fez no último compromisso. Faça uma redefinição dura apenas quando tiver certeza de que não precisa mais de nada do último compromisso.

Eu vou puxar o ou seja, Fix ramificar do meu repositório do GitHub novamente para recuperar o último compromisso AEC00F3 e remova -o novamente nesta seção.

$ Git Pull Origin IE-Fix

Como você pode ver, o último compromisso está de volta. Se o seu repositório Git for enviado para um serviço de nuvem Git, como o Github, você poderá restaurar qualquer comissão que você remova erroneamente.

Como você pode ver, minha área de preparação está limpa.

$ git status

Agora, para remover o último compromisso e remover as alterações nesse compromisso, execute o seguinte comando:

$ git Reinicia -Cabeça difícil ~ 1

O último compromisso deve ser removido e o CABEÇA O ponteiro deve ser atualizado.

Como você pode ver, o compromisso AEC00F3 é removido e o compromisso imediatamente antes disso (3fffdee) é o atual último compromisso.

$ git log --oneeline

A área de estadiamento também está limpa. Portanto, existem alterações de arquivos do commit removido.

$ git status

Atualizando o Remote Git Repository:

Agora que você removeu com sucesso o cometido defeituoso do seu repositório Git, você pode querer atualizar seu repositório do GitHub também. Este é o tópico desta seção.

Como você pode ver, status git também mostra que estou cometido por trás do repositório remoto.

Antes de atualizar meu repositório do GitHub, o commit AEC00F3 existe, apesar de eu removê -lo do repositório Git local como você pode ver.

Para sincronizar o repositório Git local com o repositório do GitHub, execute o seguinte comando:

$ git push-Force Origin, ou seja, Fix

As mudanças do repositório Git local devem ser sincronizadas com o repositório do GitHub.

O repositório do GitHub deve ser atualizado. Como você pode ver, o compromisso AEC00F3 não está mais listado. O compromisso imediatamente antes AEC00F3, qual é 3fffdee agora é o último compromisso.

Então, é assim que você desfaz pela última vez em Git. Obrigado por ler este artigo.