Salvar o Dia Com Git e Remover do Histórico de Commits

Você já encontrou algum erro ou teve problemas com commits do Git ao trabalhar com o Git? Talvez um segredo ou dados sensíveis tenham sido salvos de forma errada. Felizmente, você pode processar seus arquivos com o Git e removê-los 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, geralmente você deseja olhar para trás e ver todos os commits que 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 consiste em instruções passo a passo. Se você quiser acompanhar, certifique-se de ter o seguinte:

  • 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 com o Git em equipe, você faz centenas de commits diariamente. Como resultado, há grandes chances de você precisar desfazer um commit específico, como devido a um arquivo incorreto ou vários arquivos. Essa necessidade geralmente é causada por uma mudança no código ou configuração e se torna um problema.

Para resolver esse problema, você precisa 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 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 da pasta preferidos.

# Cria a pasta do Repositório e 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

Depois de executar o comando, você notará que os commits não estão sendo rastreados e ainda não foram confirmados, como 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.

Este 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 alterações 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 fazer o commit, 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 estado do repositório.

git status

Como você pode ver abaixo, o arquivo foi removido da área de preparação (o commit do Git) e mostra o arquivo (test_file2.txt) sob Arquivos Não Rastreados.

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 geralmente, você terá que 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ê vai fazer o commit de alguns arquivos, depois redefinir as alterações para remover os arquivos recentemente comitados armazenados no commit do Git:

1. Crie dois novos arquivos de texto com os nomes test_file3.txt e test_file4.txt na pasta ~/Desktop/Repositório/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/Repositório/repo1).

git add .

3. Execute o comando git commit abaixo para comitar os arquivos para que o Git acompanhe o progresso e as mudanças 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 exibe 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. Em seguida, execute novamente o comando git status abaixo para verificar o estado do repositório.

git status

Abaixo, a saída mostra os arquivos test_file3.txt e test_file4.txt que precisam ser commitados. Essa 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ê quiser começar do zero. Mas e se você precisar remover apenas um commit específico? O comando git revert resolverá o problema, 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 sim alterados. Agora você irá commitar as alterações para ver o comando git revert em ação.

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

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

Após executar o comando, você notará que ambos os arquivos de texto são novamente confirmados, 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, junto com o arquivo l.txt dentro dele.

Verifying the Folder (myfolder) Has Been Removed Successfully

Conclusão

No tutorial, você aprendeu a trabalhar com commits no Git, como remover um commit específico, um arquivo ou vários arquivos. Você também abordou a exclusão de uma pasta inteira dentro do repositório local e fez commit das alterações.

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

Com base no que você aprendeu neste tutorial, qual método você acha excelente para lidar com commits na sua equipe?

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