-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add conflicts chapter #32
base: main
Are you sure you want to change the base?
Conversation
337a8d3
to
c409f3c
Compare
Signed-off-by: Lays Rodrigues <[email protected]>
c409f3c
to
a8439f3
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
O texto está muito bom. Eu tenho apenas pequenas considerações que podem deixar o texto ainda melhor. Veja e me diga o que acha.
git checkout gera_conflito | ||
|
||
# Comando para realizar um rebase entre gera_conflito e a main | ||
git rebase main |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Da pra explicar isso aqui sem fazer rebase? Seria legal evitar de colocar mais um elemento nessa explicação aqui.
### Git Rebase | ||
No cenário apresentado na imagem abaixo, simulamos o evento de _rebase_ entre duas _branches_. Este exemplo foi feito no VSCode que possui ferramentas que nos auxiliam no tratamento de conflitos. | ||
|
||
**Fluxo representando o git rebase** | ||
![Fluxo representando o git rebase](./resources/images/git_rebase.png) | ||
|
||
Agora vamos detalhar os elementos presentes nesta imagem. | ||
|
||
O bloco entre `<<<<<<< HEAD (Current Change)` e o `=======` destacado em tons de **verde**, representa as alterações pertencentes ao commit na sua _branch_ atual, e o bloco a partir deste último até `>>>>>>> (Commit causador de conflito) (Incoming Change)` destacado em tons de **azul** representa as alterações que o _commit_ da _branch_ para a qual você está realizando o _rebase_ possui. | ||
Resumidamente o comando `rebase` avalia qual o último _commit_ as duas _branches_ possuem em comum, e a partir desse puxa todos os _commits_ na _branch_ `main` e depois que puxar todos esses _commits_, adiciona os _commits_ relacionados a `gera_conflito`. | ||
|
||
No diagrama abaixo temos representados dois cenários. O Cenário I representa nosso estado atual entre as _branches_: Temos o bloco _A_ que concentra o grupo de _commits_ realizados na _branch_ `gera_conflito`, e no bloco _B_ o grupo de _commits_ realizados na _branch_ `main`. No segundo cenário representamos o que seria o fluxo de sucesso, onde conseguiríamos trazer tranquilamente as mudanças da `main` para `gera_conflito`, mas como estamos simulando o cenário de conflito, os blocos _A_ e _B_ contém mudanças conflitantes entre si. | ||
![Diagrama do fluxo de rebase](./resources/images/git_rebase_diagram.png) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Se rebase for removido desse capítulo, podemos mover toda essa parte pro capítulo de git básico.
# Como tratar conflitos no Git? (Lays Rodrigues) | ||
|
||
Em nosso dia a dia de desenvolvimento inevitavelmente vamos ter que lidar com conflitos no Git. | ||
Segundo a definição do [Github Docs](https://docs.github.com/en/github/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts) um conflito "é criado quando você faz um _merge_ entre _branches_ que possuem commits concorrentes e o Git precisa da sua ajuda para decidir quais alterações incorporar na _merge_ final." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
O que acha de colocar uma imagem só pra deixar mais claro a explicação do problema. Normalmente esse primeiro paragrafo serve pra explicar o problema. Eu sei que isso é detalhado depois, mas didaticamente, deixar claro sobre qual problema a pessoa está lendo facilita o entendimento.
Neste PR proponho adicionar o capítulo que fala sobre conflitos no git e que o assunto é comentado no capítulo "O que é um Pull Request?"
Dúvidas
closes #6