Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Voltando no tempo e ficando lá mesmo!

Volto no tempo usando git checkout dc958e3. E quero continuar o desenvolvimento a partir desse "commit dc958e3". Uso o comando git checkout -b novo-branch. Até aqui tudo certo. Agora uso o comando git checkout master. Volto para master e aplico o comando git rebase novo-branch O que acontece? Aparece erro de conflito. O que está errado? Será essa mesmo a melhor maneira de "voltar no tempo"?

Desde já agradeço a todos que puderem ajudar a solucionar esse problema.

1 resposta
solução!

Oi, Flávio! Tudo bom?

De início, peço desculpas pela demora em retornar!

Em alguns aspectos, o git rebase se assemelha bastante com o git merge, haja vista que ambos promovem a integração de uma branch com outra. Por esse motivo, tal como no git merge, quando tentamos executar o comando git rebase e há inconsistências entre commits, recebemos uma mensagem de erro avisando que há um conflito.

Para dar continuidade ao rebase, teremos que, inicialmente, resolver o conflito que nos foi apontado. Observe o passo a passo abaixo:

1 - Verificar o conflito: por meio do Git Bash, podemos executar o comando abaixo, o qual nos mostra a diferença entre o conteúdo presente na branch master e na branch novo-branch, separando os trechos de código conflitantes por uma linha dupla (=======):

cat index.html

2 - Decidir qual parte do código desejamos manter: em vários editores de código, como o Visual Studio Code, é apresentado o mesmo retorno do comando que vimos acima (porém, de uma forma mais agradável). Além disso, ele nos dá a possibilidade de escolher qual alteração manteremos, veja um exemplo abaixo:

Captura de tela. Trecho de código em HTML no editor de texto Visual Studio Code. A primeira linha possui a tag “body”. Logo abaixo, há uma sequência de opções em Inglês, que significam “Aceitar mudança atual”, “Aceitar mudança recebida”, “Aceitar ambas mudanças” e “Comparar mudanças”. Abaixo, está destacado pela cor verde o código presente na branch master, o qual é separado por um conjunto de sinais de igual, indicando uma linha. Depois disso, há o código presente na nova branch que foi criada. Por fim, há a tag de fechamento de “body”.

Partindo da imagem acima, note que em verde está o conteúdo presente na branch master e em roxo, o da branch new_branch. Acima disso há algumas opções que podemos clicar; após a tradução do Inglês para o Português, temos:

  • Aceitar a mudança atual (o que foi feita na branch master);
  • Aceitar a mudança recebida (o que foi feita na outra branch);
  • Aceitar ambas as mudanças;
  • Comparar mudanças.

Escolhida a alteração desejada, podemos partir para a etapa final.

3 - Ao voltar para o Git Bash, será preciso adicionar a nova modificação que fizemos na branch master:

git add .

4 - Ao fim, basta retomar a execução do git rebase, desta maneira:

git rebase --continue

Depois de todos esses passos, podemos dar continuidade ao nosso projeto, realizando um commit e fazendo push para o nosso repositório remoto:

git commit -m "Escreva aqui uma descrição breve sobre a modificação"
git push local master

“Voltar no tempo” a partir dos comandos que você abordou (como o git checkout) e juntamente utilizar o git rebase, é uma ótima maneira de trabalhar no desenvolvimento de um projeto, visto que evitamos, por exemplo, possíveis problemas na branch principal. Nesses momentos, a aparição de conflitos é, de todo modo, comum, principalmente quando trabalhamos em uma equipe de desenvolvimento. Analisar os erros e entrar em um acordo com o nosso time para decidir quais alterações devem permanecer fará parte deste processo.

Caso tenha se interessado pelo assunto e gostaria de se aprofundar nele, recomendo assistir a Websérie super interessante da Alura "Git e Github para sobrevivência"! Um dos episódios, inclusive, aborda o uso do git rebase.

Você pode acessá-la a partir do link abaixo:

Espero que tenha compreendido minha explicação, Flávio. Fico à disposição para ajudá-lo caso tenha mais alguma dúvida!

Abraços e até mais.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.