Introdução ao Git e Github — Parte III
Published: 2023-12-06 10:07:38

Chegou a hora de começar a trabalhar com branches. Em um time que está desenvolvendo um produto, seja um software ou um modelo de machine learning, é importante trabalhar com branches ao invés de realizar as alterações no branch principal.

Neste tutorial, vamos clonar um repositório remoto, realizar alterações utilizando um branch novo, subir as alterações no repositório remoto e criar um pull request para solicitar que as alterações sejam incorporadas ao branch principal.

Mas antes de colocar a mão na massa, vamos entender três conceitos abordados aqui: branches, pull requests e merge.

## Branches (ramos)
Um branch é uma cópia isolada do código de um projeto, que permite que você trabalhe em novas funcionalidades, correções de bugs ou outras alterações sem afetar diretamente o código principal (branch master ou main). Utilizar branches é muito útil quando várias pessoas estão trabalhando no mesmo projeto simutaneamente, pois cada membro da equipe pode ter o seu próprio branch para realizar as suas alterações e ao final ele pode ser mesclado de volta ao branch principal. Conforme explicado no [primeiro post](https://dev.to/amandashichinoe/introducao-ao-git-e-github-parte-i-37nh) desta série, em um projeto pode existir ainda o branch “dev”,que é derivado do branch “main”, e é usado como o branch principal de desenvolvimento, mas isso varia de acordo com o time.

## Pull Request (solicitação de pull/merge)
Um pull request (também chamado de merge request em algumas plataformas), é uma solicitação feita ao final do desenvolvimento para que o seu branch possa ser incorporado de volta ao branch principal. É uma prática comum eleger reviwers (revisores) ao criar o pull request. Os reviewers são pessoas que vão revisar o seu código, podendo adicionar comentários e solicitar alterações, antes de aprovar o pull request.

## Merge (mesclagem)
Quando um pull request é aprovado, a mesclagem (merge) ocorre, combinando as alterações de um ramo (branch) em outro. Às vezes podem ocorrer conflitos ao realizar essa operação (o famoso conflito de merge), quando as mesmas partes de um arquivos foram modificadas em paralelo em ambos os branches. Por isso, é importante revisar o código antes de aprovar uma solicitação de pull (pull request), e ter muito cuidado ao realizar uma mesclagem de forma manual.

## Mão na massa
Hora de colocar a mão na massa, lembrando que este é um tutorial básico para que você tenha um contato com a utilização de branches.

1º passo: Abra o Git Bash em um repositório que foi clonado na sua máquina. De preferência um repositório seu, apenas para fins didáticos. Você pode utilizar o repositório criado no primeiro artigo desta série, o importante é que ele já esteja ligado ao GitHub.
2º passo: A partir do seu repositório local utilize o comando “git branch” para verificar em qual branch você está. Neste exemplo, estou no branch main:

```
git branch
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9vtn7d3pn495jhagwy4i.png)

3º passo: Faça o checkout para um novo branch usando o comando “git checkout -b <branch>”. O parâmetro -b indica que quero criar esse branch caso ele não exista.

```
git checkout -b dev
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nrj0kkemdnz9sxt3q75e.png)

4º passo: Execute novamente o comando “git branch” para validar em qual branch você está. Note que aparece um “*” antes do branch atual:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vyhczu4ksohttq21uq0y.png)

5º passo: Faça as modificações necessárias no projeto. Neste exemplo vou criar um novo arquivo “meuarquivo.txt” e escrever no arquivo a frase “Olá, mundo!”:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cqs2mthy5lh6rtao14zr.png)

6º passo: Após realizar as alterações desejadas, execute o comando “git status” para verificar o que foi alterado.

```
git status
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rxvn5vmwo73v20i7ys35.png)

7º passo: Adicione os arquivos modificados desejados à área de stage:

```
git add . # para adicionar todas as modificações
git add <nome-arquivo> # para adicionar somente as modificações realizadas em um arquivo específico
```
8º passo: Você pode verificar novamente o que foi enviado à área de stage:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/umvr7uerjfw1b3hx56ev.png)

9º passo: Crie o commit e adicione uma mensagem para identificar o commit:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4iguxepg7o5xsubryxl4.png)

10º passo: Envie as alterações ao repositório remoto utilizando “git push origin <nome-do-branch>”:

```
git push origin dev
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6oep7jik8ir84gbv0yae.png)


Ao acessar o repositório pelo navegador, é possível ver uma mensagem dizendo que o branch dev enviou alterações, e a opção para comparar as modificações e criar o pull request.




Os passos a seguir variam bastante, de acordo com as configurações do repositório no próprio GitHub ou da ferramenta utilizada para hospedar o código remotamente, mas os conceitos básicos por trás são os mesmos.

O repositório deste tutorial é um repositório meu, da minha conta pessoal do GitHub. Em uma empresa, normalmente você precisa adicionar os reviwers ao fazer o pull request, que são pessoas que vão revisar o seu código e aprovar o merge ao branch principal de desenvolvimento.

## Criando um Pull Request
Clique em “Compare & pull request”:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2obyftin007pbswghzwg.png)

É possível adicionar comentários sobre o commit e alterar o nome do pull request. Para criar o pull request clique em “Create pull request”.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0l49r4226jdvkc278855.png)

## Aprovando o Pull Request
Caso você tenha permissões para aprovar o pull request e fazer o merge, irá aparecer uma nova tela com as informações do pull request.

Para verificar o que foi alterado, você pode clicar na aba “Files changed”. Nessa aba irá aparecer a comparação do código que você tinha antes, com o código atual para que você e quem vai revisar o código para aprovar o pull request possam visualizar o impacto das alterações no projeto. Se houverem conflitos, eles também irão aparecer. Nesse caso você precisará resolvê-los localmente e atualizar o código do seu branch novamente (mas isso é assunto para outra publicação).

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k3uy1sw594p4kt09n46s.png)

Para aprovar o pull request, na aba “Conversation” clique na opção “Merge pull request”:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dqc6g4jf8ldxuogd07ct.png)

E clique em “Confirm merge”

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zb7nmx15abh9ao00x4hd.png)

Após a confirmação, você pode apagar o branch que realizou o pull request.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/svmziridhat98bmve1dh.png)

Ao atualizar a página do repositório, você verá que as mudanças serão aplicadas.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ushek1sf6zjzm3odmwy.png)

Espero que este tutorial tenha te ajudado!

Se ficou alguma dúvida, sinta-se à vontade para me contatar.