Skip to content
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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Add conflicts chapter #32

wants to merge 1 commit into from

Conversation

lays147
Copy link
Contributor

@lays147 lays147 commented Oct 19, 2021

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

  • @gomex onde eu posso adicionar o capítulo em Book.txt?
  • Tenho o svg do diagrama, posso add em resources?
  • Ficou muito código no início? Pensei em ir direto para a explicação e deixar o código no fim, o que acha?
  • Foquei em como resolver o conflito localmente em vez de no PR, pq eu nunca resolvi conflito em PR, então não sei descrever como seria, e qual seria o melhor lugar de resolver um conflito, pq pra mim seria sempre localmente, até antes de abrir um PR. Daí alguém no futuro pode complementar se quiser.

closes #6

@lays147 lays147 changed the base branch from main to preview October 19, 2021 02:13
@lays147 lays147 changed the base branch from preview to main October 19, 2021 02:14
Signed-off-by: Lays Rodrigues <[email protected]>
Copy link
Owner

@gomex gomex left a 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
Copy link
Owner

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.

Comment on lines +44 to +57
### 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)

Copy link
Owner

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."
Copy link
Owner

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Criar capítulo para conflitos de pull requests
2 participants