Nesse tutorial, vamos praticar o uso do “git revert” para compreender como ele ajuda a desfazer alterações quando trabalhamos de forma colaborativa.
Pre-requisito: Criar um repositório público no GitHub. Não adicione o arquivo Readme.
Passo 1: Com um usuário que podemos chamar de USER-A, clone o repositório que você criou na etapa de pre-requisito
1 2 |
$ git clone <URL_do_repositório> $ cd <nome_do_repositório> |
Passo 2: USER-A inicia o desenvolvimento e faz 4 commits
O USER-A está criando 4 arquivos. Para cada arquivo adicionado ele fará um commit.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ echo "Conteúdo do arquivo 1" > file1.txt $ git add file1.txt $ git commit -m "Adicionar file1.txt" $ echo "Conteúdo do arquivo 2" > file2.txt $ git add file2.txt $ git commit -m "Adicionar file2.txt" $ echo "Conteúdo do arquivo 3" > file3.txt $ git add file3.txt $ git commit -m "Adicionar file3.txt" $ echo "Conteúdo do arquivo 4" > file4.txt $ git add file4.txt $ git commit -m "Adicionar file4.txt" |
Depois de fazer o commit para o repositório git local, o user USER-A precisa fazer o push para o repositório. Para isso ele precisa de um token e da url do repositório. A sintaxe do comando é a seguinte:
1 |
$git push https://<repo-user>:<token>@github.com/<repo-user>/<repo-name> |
No exemplo acima, substitua as variáveis pelos valores do seu próprio repositório.
Passo 4: USER-B trabalha no projeto e vai inserir um novo commit
Primeiro ele precisa fazer login no servidor ou desktop e clonar o repositório que foi criado e populado pelo usuário USER-A. Se as credenciais do GitHub não foram configuradas, você precisa configurar com os comandos a seguir:
1 2 |
$ git config --global user.name "<repo-user>" $ git config --global user.email "<repo-user-email>" |
Fazendo o clone:
1 |
git clone https:github.com/<repo-user>/<repo-name> |
Passo 5: USER-B trabalha no commit E
Agora é a vez do USER-B contribuir para o projeto. Ele vai criar um novo arquivo chamado “file5.txt” e fazer um commit com essa alteração.
1 2 3 |
$ echo "Conteúdo do arquivo 5" > file5.txt $ git add file5.txt $ git commit -m "Adicionar file5.txt" |
Passo 6: USER-B faz o push do trabalho de adicionar o “file5.txt”
1 |
$git push https://<repo-user>:<token>@github.com/<repo-user>/<repo-name> |
Passo 7: USER-A faz pull (download) do repositório e identifica bugs nos commits C e D
1 |
$git pull https://<repo-user>:<token>@github.com/<repo-user>/<repo-name> |
Ou seja, o USER-A percebe que precisa desfazer bugs que foram inseridos com os commits que adicionaram os arquivos file3.txt e file4.txt. Ele não pode fazer um reset para não perder as alterações do USER-B.
Passo 8: Utilizando o “git revert”
Anote o hash do commit C para usar no comando “git revert” com o comando “git log”
1 |
$ git log |
Agora aplique o comando “git revert”
1 |
git revert <hash-id> |
Repita o processo para desfazer o comit D.
1 |
$ git revert <hash-id> |
Passo 9: Envie as alterações para o Repositório no GitHub:
1 |
$ git push https://<repo-user>:<token>@github.com/<repo-user>/<repo-name> |
Agora, USER-A conseguiu desfazer os bugs em commits C e D sem perder o trabalho do USER-B realizado no commit E.
Espero que este tutorial tenha sido claro e útil para entender o uso do “git revert” em um cenário colaborativo. Lembre-se de que o “git revert” é uma forma segura de desfazer alterações específicas em commits anteriores, sem reescrever o histórico. Se tiver mais dúvidas ou precisar de mais ajuda, fique à vontade para perguntar. Continuem praticando e aperfeiçoando suas habilidades com Git e GitHub! Até a próxima!