GIT - O mínimo que você precisa saber para trabalhar em equipe (Parte 1)
Tags: git, scm
Published: 2020-09-20 19:44:34

---
title: GIT - O mínimo que você precisa saber para trabalhar em equipe (Parte 1)
published: true
description: Artigo explicando o conceito de git e versionamento
tags: git, scm, 
//cover_image: https://direct_url_to_image.jpg
---

Esta é uma série de dois artigos que explica o básico sobre [Git](https://git-scm.com/). No primeiro artigo é apresentado alguns termos e conceitos básicos. No segundo será feito uma apresentação dos principais comandos de Git utilizados no dia a dia de um programador.

Clique aqui para ler a [parte 2](parte1), explicando os principais comandos do git.

## Introdução

Está cada vez mais difícil de se falar em projetos de TI sem se falar em versionamento, e sem dúvidas está cada vez mais difícil ingressar no mercado sem conhecer tecnologias de versionamento. Dentre as várias tecnologias que um desenvolvedor precisa conhecer, o Git se tornou a tecnologia de versionamento essencial para os programadores de hoje em dia.
Se você está ingressando no mercado de TI agora, ou já trabalha há algum tempo e ainda não compreendeu como usar essa ferramenta, este artigo é para você.
Aqui vamos trabalhar os conceitos essenciais para que você consiga entender e utilizar o git minimamente bem para trabalhar num projeto de desenvolvimento.

### O que é git?

Git é um sistema de controle de versão. Com ele é possível que vários desenvolvedores contribuam no desenvolvimento de um mesmo sistema sem o risco de perder arquivos ou linhas de código. Com Git é possível manter um histórico de alterações do projeto e descentralizar o processo de desenvolvimento.

### Por quê git?

Git não é o único sistema de controle de versão existente, então porque ele é tão falado e no universo de desenvolvimento de sistemas? Git possui uma arquitetura distribuída, isso significa que todo desenvolvedor tem uma cópia local do projeto em que está trabalhando, e que ele não precisa de acesso a internet para criar seu histórico de alterações. Além disso, sua estrutura garante que se minimize os conflitos de código quando mais de um desenvolvedor trabalha em um mesmo código.
Existem várias outros motivos para o sucesso do Git, mas como esse artigo é sobre o mínimo, vamos encerrar essa sessão por aqui.

## Os termos

### Repositório

Um repositório é onde está armazenado o seu projeto, com as suas branches (calma, logo chegamos lá) e arquivos. O repositório fica armazenado em um servidor Git, geralmente este servidor fica na nuvem, em serviços como [Bitbucket]() e [Github](). Quando um desenvolvedor que vá trabalhar no seu projeto, ele faz uma cópia local do repositório em sua máquina.

### A árvore

Quando criamos um repositório git, criamos também uma árvore (*tree*). O código do projeto inicial é um *branch* (galho/ramo), e a partir dele é possível criar novos branches, cada *branch* criado é uma cópia exata do seu *branch* pai no momento da criação. A criação de novos *branches* normalmente ocorre quando uma nova alteração no código precisa ser realizada. De modo que as alterações que o desenvolvedor realizar em uma branch serão salvas apenas neste branch.


### Commits

Commit é outra palavra bastante utilizada no universo Git. Quando estamos trabalhando em um branch é possível realizar commits (confirmações alterações). Quando estes commits são realizados, é como se tirássemos uma foto daquele branch naquele exato momento, a partir de então é possível voltar naquela foto e fazer alterações a partir dela sempre que necessário.

### A Origem

Como mencionado anteriormente, o Git é um sistema distribuído, ou seja o desenvolvedor possuirá uma cópia local do repositório em sua máquina. Quando ele fazer alterações e commits no seu repositório essas alterações serão salvas localmente. Para que outros desenvolvedores tenham acesso às essas alterações é necessário enviá-las para a origem, que nada mais é que a cópia original armazenada no seu repositório Git.

### Merges ou junções

Quando um desenvolvedor quer reproduzir as alterações de sua branch para outras branches é necessário que ele faça a junção das branches, processo também conhecido como merge. 

### Workflow

Algo que confunde muitos iniciantes em Git é o conceito de workflow, ou fluxo de trabalho. Não existe regra universal para quando um novo branch deve ser criado, quando o desenvolvedor deve realizar commits ou até mesmo realizar um merge, tudo isso é definido em conjunto pela equipe de desenvolvimento, esse conjunto de regras é chamado de workflow. Então é muito importante procurar entender o workflow da equipe em que você trabalha, só assim o desenvolvedor saberá em qual branch ele deve trabalhar, em qual branch ele vai fazer merge de suas alterações e quando ele deve fazer commits e merges.

## Referências

- [Git docs](https://git-scm.com/book/en/v2/)
- [Getting Started About Version Control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control)
- [A successful git branch model](https://nvie.com/posts/a-successful-git-branching-model/?)
- [Git guide by Roger Dudler](http://rogerdudler.github.io/git-guide/)
- [Atlassian](https://www.atlassian.com/git/tutorials)