A diferença entre Git Reset, Git Checkout e Git Revert ⋆ ALexHost SRL

Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills
17.01.2025

A diferença entre Git Reset, Git Checkout e Git Revert

Um controle de versão eficiente é vital para qualquer projeto de desenvolvimento, e a infraestrutura certa pode melhorar significativamente o seu fluxo de trabalho. A AlexHost oferece soluções de hospedagem VPS poderosas e escaláveis, ideais para hospedar seus repositórios Git e garantir um gerenciamento de projeto tranquilo. Com endereços IPv4 dedicados, armazenamento NVMe rápido e um painel de controle fácil de usar, a AlexHost oferece o ambiente perfeito para executar o Git e outras ferramentas de desenvolvimento, proporcionando o desempenho e a confiabilidade necessários para uma colaboração perfeita.

Ao trabalhar com o Git, há vários comandos que permitem desfazer alterações ou navegar entre diferentes estados do seu repositório. Três dos comandos mais comumente usados para essa finalidade são git reset, git checkout e git revert. Embora possam parecer semelhantes, cada um deles tem uma finalidade distinta e opera de uma maneira diferente.

Aqui está uma análise detalhada das diferenças entre git reset, git checkout e git revert:


1. git reset

o git reset é usado para desfazer commits ou cancelar alterações, movendo o ponteiro HEAD do branch atual para um commit específico. Ele modifica o histórico de commits e pode afetar o diretório de trabalho, a área de preparação ou ambos, dependendo de como é usado.

Casos de uso:

  • Desfazer commits recentes.
  • Mover o ponteiro HEAD de volta para um commit anterior.
  • Desfazer a preparação de arquivos da área de preparação (mantendo as alterações no diretório de trabalho).

Sintaxe do comando:

git reset [–soft | –mixed | –hard]

Modos de redefinição:

  • –soft: Move o ponteiro HEAD para o commit especificado, mas mantém as alterações na área de preparação e no diretório de trabalho.
  • –mixed (padrão): Move o ponteiro HEAD para o commit especificado e redefine a área de preparação, mas mantém as alterações no diretório de trabalho.
  • –hard: move o ponteiro HEAD, redefine a área de preparação e descarta todas as alterações no diretório de trabalho.

Exemplo:

git reset –hard HEAD~1 # Move HEAD para trás em um commit e descarta todas as alterações

Cuidado: git reset –hard é uma operação destrutiva porque remove permanentemente as alterações do diretório de trabalho e do histórico de commits.


2. git checkout

o git checkout é usado para alternar entre ramificações ou para fazer check-out de um commit ou arquivo específico. Ele modifica o diretório de trabalho para que corresponda ao estado da ramificação, do commit ou do arquivo que você verificou, mas não modifica o histórico de commits, a menos que você crie um novo commit após a troca de ramificações.

Casos de uso:

  • Alternar entre ramificações.
  • Verificação de um commit anterior ou de arquivos específicos sem alterar o histórico de commits.
  • Criação de uma nova ramificação.

Sintaxe do comando:

git checkout # Muda para um ramo diferente git checkout # Faz o checkout de um commit específico em um estado HEAD desvinculado git checkout — # Restaura um arquivo específico para seu último estado de commit

Exemplo:

git checkout feature-branch # Muda para ‘feature-branch’ git checkout 123abc # Faz o checkout do commit com hash 123abc (estado HEAD desvinculado) git checkout — file.txt # Restaura o arquivo.txt ao seu estado no último commit

Cuidado: Se você fizer check-out de um commit específico (não de uma ramificação), entrará em um estado HEAD desvinculado, o que significa que as alterações não serão associadas a nenhuma ramificação, a menos que você crie uma nova ramificação a partir desse ponto.


3. git revert

o git revert é usado para desfazer um commit, criando um novo commit que reverte as alterações introduzidas pelo commit original. Ele preserva o histórico do commit, o que o torna uma maneira segura de desfazer as alterações sem reescrever o histórico.

Casos de uso:

  • Desfazer commits com segurança, especialmente em ramificações compartilhadas ou remotas.
  • Reverter commits específicos mantendo o histórico de commits intacto.
  • Desfazer alterações em um ambiente colaborativo.

Sintaxe do comando:

git revert

Exemplo:

git revert HEAD # Desfaz o commit mais recente e cria um novo commit com as alterações inversas git revert # Desfaz um commit específico criando um novo commit que reverte suas alterações

Observação importante: o git revert não exclui nenhum histórico ou commit. Em vez disso, ele cria um novo commit que desfaz as alterações do commit especificado. Isso torna o git revert um comando não destrutivo que mantém um histórico completo de alterações.

Quando usar cada comando

  • Use o git reset quando:
    • Você precisa desfazer um commit recente (ou vários commits) em seu repositório local.
    • Deseja desfazer a montagem de arquivos ou reverter alterações em seu diretório de trabalho.
    • Você está trabalhando em uma ramificação local e não precisa preservar o histórico de commits.
  • Use o git checkout quando:
    • Você precisa alternar entre ramificações.
    • Deseja fazer check-out de um commit anterior sem modificar o histórico (em um estado HEAD desanexado).
    • Você precisa restaurar um arquivo ou pasta ao seu estado anterior sem afetar o restante das suas alterações.
  • Use o git revert quando:
    • Você precisa desfazer alterações que já foram enviadas para uma ramificação compartilhada ou remota.
    • Você deseja desfazer um commit, mas manter o histórico intacto.
    • Você está colaborando com outras pessoas e deseja manter um histórico de confirmações claro e preciso.

Conclusão

Cada um desses comandos do Git – git reset, git checkout e git revert – tem sua finalidade e efeito exclusivos. Entender quando e como usá-los corretamente é essencial para gerenciar o histórico e as alterações do seu projeto de forma eficaz. Quando se trabalha em um ambiente colaborativo, geralmente é mais seguro usar o git revert para desfazer as alterações, enquanto o git reset pode ser útil para limpar o histórico local. O git checkout, por outro lado, é o comando ideal para alternar branches ou navegar por diferentes commits sem alterar o histórico do repositório.

Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills