[Tutorial] Como usar o Git e GitHub
Tags: git, github, beginners, tutorial
Published: 2024-04-22 02:03:52

No mundo do desenvolvimento de software, dominar ferramentas como o Git e GitHub se tornou fundamental para qualquer desenvolvedor. Com isso, por meio deste guia, espero contribuir para o início da sua jornada no gerenciamento de projetos de forma eficiente e colaborativa.

## O que é Git e GitHub?
O Git é um sistema de controle de versão distribuído que permite rastrear as alterações no código fonte durante o desenvolvimento de software, ele foi criado por Linus Torvalds com objetivo de auxiliar no versionamento do seu projeto Linux. O GitHub, por sua vez, é uma plataforma de hospedagem de códigos que não apenas permite acessar nossos projetos de qualquer lugar, mas também facilita o compartilhamento desses projetos com outros usuários, além de diversos outros recursos.

Para este tutorial será necessário que você instale o [Git](https://git-scm.com/downloads) no seu computador e também que crie uma conta no [GitHub] (https://github.com).

## Como usar
**1. Configuração Inicial**
Após a instalação do Git, devemos configurar o nome de usuário e endereço de e-mail. Podemos fazer isso utilizando os seguintes comandos no terminal ou no próprio Git Bash, que é incluído como parte do pacote Git para Windows:

```
git config --global user.name "Seu Nome"
git config --global user.email "email@exemplo.com"
```
Esses comandos configuram globalmente o nome de usuário e o endereço de e-mail que serão utilizados em todos os seus repositórios Git no sistema. Certifique-se de utilizar o endereço de e-mail associado à sua conta do GitHub.

**2. Criar um Repositório Local**
Crie uma pasta em seu computador para um projeto ou navegue até um projeto existente que desejar armazenar no GitHub e inicie um repositório Git local com o comando:

```
git init
```

**3. Adicionar Arquivos e Confirmar alterações**
Adicione os arquivos do seu projeto ao controle de versão do Git com o comando:
```
git add nome_do_arquivo
```
Ou caso queira adicionar todos arquivos do diretório atual para o controle de versão do Git, simplesmente utilize:
```
git add .
```

Com isso, podemos confirmar a mudança feita dando uma descrição para ela.
```
git commit -m "mensagem de commit"
```

**Entendendo o Fluxo** 
O fluxo do Git envolve três principais áreas:

- Working Directory: É onde ficam os arquivos que ainda não foram adicionados ao controle de versão do Git.

- Staging Area (ou Index): É uma área intermediária onde ocorre a preparação dos arquivos para serem commitados. Você utiliza o comando git add para mover arquivos do diretório de trabalho para esta área.

- Repositório: É onde os commits são armazenados permanentemente após o comando git commit. Aqui estão registradas todas as alterações confirmadas usando git add e git commit.


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

<blockquote>
É recomendável usar sempre o comando <code>git status</code> após cada comando do Git para saber a situação atual do fluxo de versionamento.
</blockquote>

**4. Conectar o repositório ao GitHub**
Neste ponto, temos nossos arquivos seguindo um versionamento de código por meio do Git, porém ainda não podemos acessar eles remotamente já que eles estão apenas na nossa máquina. 

Para isso, devemos acessar o GitHub e criar nosso primeiro repositório clicando no botão "New", depois devemos escolher um nome para o repositório (por exemplo "meu-projeto"), definir uma descrição caso queira e clicar em "Criar repositório".

Com isso, podemos conectar o repositório local com o GitHub por meio do comando:
```
git remote add origin <link_do_repositorio>
```
O link do repositório é gerado ao criar o repositório, você pode copiar ele ou simplesmente seguir sua estrutura que é: `https://github.com/<seu_nome_usuario>/<nome_do_repositorio>.git`

**5. Enviar Mudanças para o GitHub**
Para enviar de fato as mudanças para o GitHub usamos o comando:
```
git push -u origin master
```
Vale destacar que o argumento -u (ou --set-upstream) é necessário apenas na primeira vez que você empurra uma nova branch para o repositório remoto. Ele configura a branch local para rastrear automaticamente a branch remota, logo nas próximas vezes que você usar git push sem especificar a branch e o repositório remoto, o Git saberá para onde enviar as mudanças.

Observe também que master é o nome da branch principal por padrão, porém atualmente é muito comum utilizarmos o nome main. A alteração do nome da branch principal de master para main pode ser feita por meio do comando:
```
git branch -M "main"
```

## Branch e Merge
Branches são linhas de desenvolvimento separadas que permitem trabalhar em novas funcionalidades ou correções sem interferir no código principal. Para criar uma nova branch, utilize o comando:
```
git checkout -b <nome_da_branch>
```
Para alternar entre branches, use `git checkout <nome_da_branch>` e para mesclar uma branch com a main, utilize `git merge <nome_da_branch>` estando dentro do main.

Para visualizar a branch atual basta utilizar o comando `git branch`. Assim ele exibirá as branches existentes no projeto e a atual aparecerá com um símbolo asterisco (*).

## Clone
Para baixar uma cópia do projeto de um repositório remoto para sua máquina local, utilize o comando `git clone <link_do_repositorio>`.

## Pull
Para atualizar seu repositório local com as alterações feitas no repositório remoto, utilize o comando `git pull`, assim todas novas alterações serão baixadas no seu projeto local. Sempre é recomendado utilizar esse comando para evitar conflitos, principalmente em códigos compartilhados.

## Fork
Fork é uma funcionalidade do GitHub que permite criar uma cópia independente de um repositório de outra pessoa em sua própria conta. Para fazer um fork, basta clicar no botão "Fork" no repositório desejado.

## Pull request
Um pull request é uma solicitação para incorporar as alterações feitas em um fork de volta ao repositório original. Após fazer as alterações em sua cópia do repositório e commitá-las, você pode abrir um pull request no repositório original. O proprietário do repositório original revisará suas alterações e, se aprovadas, as incorporará ao código principal.

## Conclusão

Agora você pode armazenar seus projetos remotamente e acessá-los de vários dispositivos, além de ter um controle de versionamento de código eficiente. Este tutorial contém apenas o básico do Git, há muito mais funcionalidades para explorar, por isso recomendo ler a [documentação do Git](https://git-scm.com/doc).