Como software para controle de versão, o Git torna previsivelmente fácil reverter as alterações. Mas mesmo o conceito de desfazer uma mudança é mais complicado do que você pode imaginar. Um repositório Git não é exatamente a mesma coisa que o conjunto de arquivos em que você está trabalhando localmente. Desfazer alterações significa considerar exatamente onde você deseja desfazê-las.

idiotaConfira, git reset, e idiotarestaurar são comandos que podem ajudá-lo a reverter para uma versão anterior não apenas de sua base de código, mas também de arquivos individuais. Conheça os detalhes desses comandos e você rapidamente estará pulando pelo histórico de seus arquivos como um especialista.

O que significa redefinir um arquivo?

É importante observar que redefinir um arquivo pode significar coisas diferentes para pessoas diferentes em circunstâncias diferentes. Também o git reset comando pode não corresponder às suas expectativas sobre o que significa redefinir.

Às vezes, você desejará desfazer as alterações locais para que um arquivo volte a ser sincronizado com o repositório atual. Em outras ocasiões, você pode querer reverter as alterações já confirmadas no repositório.

instagram viewer

Os termos a seguir são essenciais para entender a diferença: árvore de trabalho, área de teste e repositório. Os arquivos que você edita localmente pertencem à árvore de trabalho. Os arquivos que você confirma acabam no repositório. Quando você está no processo de coleta de alterações, prepara os arquivos. Um arquivo pode ter conteúdos diferentes em cada um desses locais.

Veja também: Tutorial Git Avançado

Você pode pensar em redefinir um arquivo como desfazer as alterações. Mas o estado do seu arquivo determinará quais alterações você está realmente desfazendo. O caso óbvio é quando você faz algumas alterações, as confirma e depois decide que não as quer mais.

Outro caso pode ser que você testou um arquivo e agora deseja removê-lo.

Como faço para reverter um arquivo confirmado anteriormente?

Vamos lidar com um caso que é mais fácil de entender: você confirmou um arquivo e agora deseja reverter as alterações nele.

O comando Git para fazer isso é, de forma não intuitiva, denominado Confira. Você pode ter usado Confira antes de mudar de branch, mas isso é uma pequena parte do que o comando pode fazer. Ele também permite que você atualize arquivos em sua árvore de trabalho para corresponder àqueles em qualquer ponto no histórico do repositório. Você pode fazer isso para uma tag, branch ou mesmo um commit específico.

A forma mais útil e de uso geral desse comando é:

git checkout [commit ID] - caminho / para / arquivo

Aqui, estamos passando por um caminho específico (caminho / para / arquivo) que identifica apenas um único arquivo. Também estamos especificando um ID de commit para obter o arquivo como ele existia naquele commit específico. Este comando atualizará o arquivo apenas em nossa árvore de trabalho.

Observe que o check-out de uma versão anterior do arquivo modifica a cópia de trabalho, sem confirmá-la ou mesmo testá-la. Para concluir totalmente o desfazer no repositório, você precisará preparar o arquivo e criar um novo commit.

Veja também: Como inspecionar o histórico de um projeto com git log

Como posso mudar o que estou preparando?

O outro tipo de desfazer envolve sua área de preparação. Ele contém as alterações que você fará ao lado do repositório. Se você testou uma versão de um arquivo e depois decide que não deseja incluí-lo no próximo commit, você desejará desempenhá-lo primeiro.

Você pode usar o git reset comando para remover o estágio de um arquivo testado:

git reset HEAD caminho / para / arquivo

Posso desfazer alterações locais rapidamente?

Sim, você pode desfazer as alterações em um arquivo local antes de ser testado. Use o seguinte comando:

git checkout - caminho / para / arquivo

Observe que isso é semelhante a reverter uma alteração no repositório, apenas omite o ID de confirmação. Depois de executar este comando, o Git desfará todas as alterações em sua cópia de trabalho.

E quanto ao git restore?

Versões posteriores do Git têm um comando mais recente: restaurar. Para os casos simples que discutimos aqui, você pode usar os seguintes equivalentes. Para desfazer uma alteração no repositório:

git restore --source [commit id] caminho / para / arquivo

Para remover o palco de um arquivo, use:

git restore --staged path / to / file

E para desfazer as alterações na cópia de trabalho:

git restore path / to / file

Dominar o poder de controle de versão do Git é inestimável

Embora redefinir um arquivo possa parecer algo comum, você descobrirá que isso raramente acontece na prática. É mais provável que você reverta commits inteiros em vez de arquivos individuais. No entanto, nas ocasiões em que você precisa fazer isso, o Git pelo menos torna isso bastante simples.

Como remover um arquivo do commit no Git

Use esses comandos Git para realizar operações como remover um arquivo de um commit.

Leia a seguir

CompartilhadoTweetO email
Tópicos relacionados
  • Programação
  • GitHub
  • Desenvolvimento web
  • Programação
Sobre o autor
Bobby Jack (63 artigos publicados)

Bobby é um entusiasta da tecnologia que trabalhou como desenvolvedor de software por quase duas décadas. Ele é apaixonado por jogos, trabalha como Editor-chefe na Switch Player Magazine e está imerso em todos os aspectos da publicação online e desenvolvimento web.

Mais de Bobby Jack

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever