> For the complete documentation index, see [llms.txt](https://cumbucadev.gitbook.io/github-essentials/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cumbucadev.gitbook.io/github-essentials/dia-4/trabalhando-com-branches-localmente/trabalhando-com-branches-localmente.md).

# Trabalhando com Branches Localmente

Nesta seção, você aprenderá como criar, mudar, mesclar e gerenciar branches de forma eficiente, garantindo um fluxo de trabalho organizado e produtivo.

## Branch

#### :flag\_br: Galho, ramificação

Uma das grandes vantagens de utilizar esse tipo de sistema é a criação das branches, que são - como o próprio nome já explica - "ramificações" do código original. Sempre que você cria um novo repositório, uma Branch Principal é criada, e por padrão, o Git dá à essa branch o nome de *main* (você ainda pode encontrar algumas com o [nome *master*](https://www.zup.com.br/blog/termo-master-na-tecnologia)). A branch main - em seu período inicial - contém todas as informações do repositório atual, com os mesmos arquivos e códigos.

<figure><img src="/files/JBQgG4m0UZuX7B9wnQsw" alt=""><figcaption><p>Branch <code>main</code> possui todos os arquivos e dados da pasta inicial (principal).</p></figcaption></figure>

Mas as branches não param por aí, pois a maior função delas é serem linhas independentes de desenvolvimento em um repositório, assim podem conter versões paralelas do código sem afetar a branch principal *(main)*. Além disso, as branches ajudam a organizar e gerenciar o fluxo de trabalho de uma equipe de desenvolvimento. Aqui estão algumas das funções mais comuns quando o assunto é branch:

* **Desenvolvimento Paralelo**: As branches permitem que diferentes desenvolvedores trabalhem em diferentes funcionalidades ou correções simultaneamente, sem interferir no trabalho um do outro. Cada desenvolvedor pode ter sua própria branch para implementar e testar suas alterações.

<figure><img src="/files/hRdij5Ev8bv6S3isRKsr" alt=""><figcaption><p>Branch <code>main</code> continua contendo a mesma "pasta inicial", mas o Desenvolvedor Jonas e a Desenvolvedora Claudia possuem branches diferentes, cada um desenvolvendo sua especialidade.</p></figcaption></figure>

* **Isolamento de Funcionalidades ou Correções**: Cada branch representa uma unidade de trabalho isolada. Isso significa que as mudanças feitas em uma branch não afetam diretamente o código em outras branches até que essas mudanças sejam **mescladas** de volta à branch principal.

<figure><img src="/files/YLoDMkNYju9qXnRPn2Ys" alt=""><figcaption><p>Branch <code>main</code> segue igual, enquanto isso, na branch <code>feature1</code> acontecem atualizações e a criação de uma nova funcionalidade.</p></figcaption></figure>

* **Testes e Experimentações**: As branches também podem ser usadas para testar novas funcionalidades ou experimentações sem comprometer o código da branch principal. Se uma experimentação não der certo, ela pode ser descartada sem afetar o código principal.

<figure><img src="/files/BOnjSGnS30HbD6k2owRu" alt=""><figcaption><p>Ainda bem que o Dev Jonas se ligou nas boas práticas e antes de fazer os novos testes    fez uma branch chamada <code>tests1.</code>Depois de um tempo, eles não se comportaram da forma esperada, foi mais fácil de deletar a branch sem fazer nenhuma alteração na branch <code>main</code>. </p></figcaption></figure>

* **Gerenciamento de Versões**: As branches também podem ser usadas para gerenciar diferentes versões de um projeto. Por exemplo, uma branch pode ser usada para manter a versão atual do software enquanto outra branch é usada para desenvolver uma versão futura.

<figure><img src="/files/Ac9syQX6bKHZXR1fqVNc" alt=""><figcaption><p>Neste exemplo o nosso Repositório conta, além da branch principal (<code>main</code>) - que contém a primeira versão do código (1.0.0), mais duas: uma chamada <code>tests1</code> e outra que contém a <code>versão 2.0.0</code>. A branch main recebe um <em>merge</em> da <code>tests1,</code> você consegue perceber quais as mudanças?</p></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cumbucadev.gitbook.io/github-essentials/dia-4/trabalhando-com-branches-localmente/trabalhando-com-branches-localmente.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
