Salve o Dia com Git e Remova do Histórico de Commits

Você encontrou algum erro ou enfrentou problemas com commits do Git enquanto trabalhava com o Git? Talvez um segredo impróprio ou dados sensíveis tenham sido salvos. Felizmente, você pode processar seus arquivos com o Git e remover do commit e corrigir o histórico.

Se você fez vários commits ou clonou um repositório com um histórico de commits já existente, normalmente, você gostaria de olhar para trás e ver quais commits foram feitos. E neste tutorial, você aprenderá como remover uma entrada do seu histórico do Git.

Continue lendo e salve o dia com o Git!

Pré-requisitos

Este tutorial compreende instruções passo a passo. Se você gostaria de acompanhar, certifique-se de ter o seguinte preparado:

  • A local machine to test the Git commands – This tutorial uses Windows 10, but later versions will also work.
  • Git Bash – Este tutorial usa o Git Bash 2.36.

Removendo um Arquivo do Commit do Git

Quando você trabalha no Git como equipe, você faz centenas de commits diariamente. Como resultado, há grandes chances de que você precise desfazer um commit específico, como devido a um arquivo incorreto ou vários arquivos. Essa demanda é geralmente causada por uma mudança no código ou configuração e se torna um problema.

Para resolver esse problema, você precisará remover o arquivo ou vários arquivos do commit do Git executando comandos do Git. Você usará uma das ferramentas populares para remover um único arquivo do commit do Git, a ferramenta Git Bash.

1. Abra a ferramenta Git Bash em sua máquina com Windows.

2. Em seguida, execute o comando abaixo para criar uma pasta de repositório e mudar para essa pasta. Esses comandos não fornecem saída no terminal. Mas certifique-se de substituir ~/Desktop/Repository/repo1 pelo caminho e nome de pasta preferidos.

# Cria a pasta do Repositório e a subpasta repo1
mkdir -p ~/Desktop/Repository/repo1
# Altera o diretório de trabalho para repo1
cd ~/Desktop/Repository/repo1

3. Execute os seguintes comandos para inicializar seu repositório e criar dois arquivos de texto chamados test1.txt e test2.txt.

# Inicializa o repositório local (criando uma pasta oculta .git)
git init
# Cria dois arquivos de texto
touch test_file1.txt test_file2.txt
Initializes the local repository

4. Agora, execute o comando abaixo para verificar o status do commit do Git.

git status

Após executar o comando, você notará que os commits estão não rastreados e ainda não foram confirmados, conforme mostrado abaixo.

Checking the status of Git commits on the Git terminal

5. Execute o comando git add abaixo para adicionar os dois arquivos de texto que você criou no passo três (test_file1.txt e test_file2.txt) ao seu repositório local.

Esse comando não fornece uma saída, mas adiciona os arquivos sem enviá-los para o repositório remoto.

git add .

6. Em seguida, execute o comando git commit abaixo para que o Git acompanhe o progresso e as mudanças que você fez no repositório local.

git commit -m "Adding two new files test_file1.txt and text_file2.txt"
Committing Changes to Repository

7. Após confirmar, execute o comando abaixo para remover um arquivo específico (test_file2.txt) do commit do Git.

git rm --cached test_file2.txt
Removing a Specific File from the Git Commit

8. Por fim, execute novamente o comando git status abaixo para verificar o status do repositório.

git status

Como pode ser visto abaixo, o arquivo foi removido da área de preparação (o commit do Git) e aparece como não rastreado (Untracked files).

Verifying the Removed Git Commit (test_file2.txt)

Removendo Todos os Arquivos Comitados Recentemente

Você acabou de aprender a remover um arquivo específico do commit do Git. Mas, normalmente, você precisará excluir vários arquivos, e o Git está à altura da tarefa com o comando git reset. O comando git reset é uma ferramenta complexa, mas ao mesmo tempo versátil, para desfazer alterações no repositório.

Para ver como o git reset funciona, você irá confirmar alguns arquivos, e em seguida redefinir as alterações para remover arquivos recentemente confirmados armazenados no commit do Git:

1. Crie dois novos arquivos de texto chamados test_file3.txt e test_file4.txt na pasta ~/Desktop/Repositorio/repo1.

touch test_file3.txt test_file4.txt

2. Em seguida, execute o comando git add abaixo, que não fornece uma saída, mas adiciona os novos arquivos de texto ao seu repositório local (~/Desktop/Repositorio/repo1).

git add .

3. Execute o comando git commit abaixo para confirmar os arquivos, para que o Git acompanhe o progresso e as alterações feitas no repositório.

git commit -m "Adding two more files"
Committing Changes to the Repository

4. Agora, execute o comando abaixo para verificar o estado do seu repositório local.

git status

Como você pode ver abaixo, a saída mostra a mensagem “nothing to commit”, indicando que tudo está em ordem no repositório.

Checking the Status of Git Commits

5. Em seguida, execute o comando git reset abaixo para reverter os commits feitos recentemente no passo três. Este comando não fornece saída, mas remove os arquivos test_file3.txt e test_file4.txt.

git reset --soft HEAD~1

Você também pode usar git reset –soft HEAD^ para remover todos os arquivos que foram commitados até agora.

6. Depois, execute novamente o comando git status abaixo para verificar o estado do repositório.

git status

A seguir, a saída mostra os arquivos test_file3.txt e test_file4.txt que precisam ser commitados. Esta saída indica os arquivos a serem removidos do commit do Git.

Verifying the Recent Commits were Removed

Removendo Commits Específicos do Histórico do Git

Remover todos os arquivos commitados funciona perfeitamente se você deseja começar do zero. Mas e se você precisar remover apenas um commit específico? O comando git revert fará o truque, desde que você saiba o ID do commit.

No último passo da seção “Removendo Todos os Arquivos Commitados Recentemente”, você notou que os commits não foram commitados, mas alterados. Agora você vai commitar as mudanças para ver o comando git revert em ação.

Execute o comando git commit abaixo para commitar as mudanças recentes no seu repositório local.

git commit -m "Hello, I am committing those two files again"

Depois de executar o comando, você perceberá que ambos os arquivos de texto foram confirmados novamente, e o ID do commit é 0315b85, como mostrado abaixo.

Committing the Changes in the Local Repository

Agora, execute o comando git revert abaixo para reverter o commit que você fez na etapa anterior. Certifique-se de substituir 0315b85 pelo ID do seu commit.

git revert 0315b85

Abaixo, você pode ver que dois arquivos que você confirmou recentemente foram excluídos.

Reverting the Changes in the Local Repository

Excluindo um Diretório do Histórico de Commits do Git

Agora você já sabe como excluir um arquivo confirmado, mas e quanto a um diretório? Excluir um diretório de um commit do Git é semelhante à exclusão de arquivos.

1. Execute os comandos abaixo, que não fornecem saída, mas realizam o seguinte:

  • Crie uma pasta chamada myfolder dentro do seu repositório local (~/Desktop/Repository/repo1).
  • Crie um arquivo chamado l.txt dentro da pasta ~/Desktop/Repository/repo1/myfolder.
mkdir myfolder && touch myfolder/l.txt

2. Em seguida, execute os comandos git abaixo para adicionar a nova pasta (~/Desktop/Repository/repo1/myfolder) ao seu repositório local.

git add .
git commit -m "Adding folder"
Adding the new folder (folder) to the Local Repository

3. Execute o seguinte comando git rm para remover a pasta (myfolder) que você confirmou na etapa dois.

git rm -r myfolder/
Removing the New Folder (folder) in Git Commit

4. Por fim, execute o comando git status para verificar o status do repositório e ver se a pasta foi removida.

git status

Abaixo, você pode ver que o diretório inteiro (myfolder) foi excluído com sucesso, juntamente com o arquivo l.txt dentro.

Verifying the Folder (myfolder) Has Been Removed Successfully

Conclusão

Neste tutorial, você aprendeu a trabalhar com commits no Git, como remover um commit específico, um arquivo ou vários arquivos. Você também aprendeu como excluir uma pasta inteira dentro do repositório local e confirmar as alterações.

Neste ponto, você pode com confiança confirmar alterações no seu repositório e remover commits que você considere desnecessários sem bagunçar as coisas.

Com o que você aprendeu neste tutorial, qual método você acha que seria excelente para trabalhar com commits para a sua equipe?

Source:
https://adamtheautomator.com/git-and-remove-from-commit/