Git - Comandos iniciais que todo dev precisa saber
Tags: braziliandevs, beginners, git, github
Published: 2023-04-02 16:21:30


## Git
Git é um software (por isso é preciso baixar na sua máquina) de sistema de controle de versões. Ele permite que você controle as alterações do seu código e crie versões diferentes do mesmo código, podendo voltar em versões anteriores se quiser. Além disso, permite que várias pessoas trabalhem em um mesmo projeto ao mesmo tempo, rastreando todas as alterações e ajudando a gerenciar conflitos.

## Github
GitHub é uma plataforma de hospedagem de código que utiliza o Git como sistema de controle de versão. Ela permite que desenvolvedores e equipes compartilhem, colaborem e gerenciem projetos. Alguma coisa ficou confusa? Aqui tem um [post explicando de forma mais simples o que é Git e Github.](https://dev.to/flavialbraz/git-e-github-para-iniciantes-entendendo-de-forma-simples-2gi3)

Agora que já passamos e entendemos o que são os dois (e que são diferentes), vamos ver o que significa os comandos antes de ver os comandos em si:

<hr>

**Repositório**
Um repositório é o local onde o seu código fica salvo, é onde você pode guardar todo o seu projeto. No nosso caso, o repositório é criado no github, mas você pode criar ele localmente (no seu computador) também. 

<hr>


**Branch**
Um branch é uma ramificação do seu repositório que permite que você trabalhe em novos recursos ou correções de bugs sem afetar o código existente. Se ficou confuso, imagine que você tem um código perfeito e funcional de uma página de login, mas você precisa fazer a validação do formulário (aquilo que confirma se o usuário digitou um e-mail válido e etc), ou seja, você vai precisa adicionar uma nova função no seu código. _Masss o problema é:_ você está trabalhando com outras pessoas e não pode mexer na versão atual do seu código, já que ela está em produção/no site. Então, o que você faz? **Cria uma branch**, faz as alterações que precisa, manda para o seu colega de trabalho verificar se está correta e, se estiver, ele junta a versão que você acabou de criar com a versão original. 


<hr>


**Push**
O push é o ato de enviar suas alterações locais para o repositório remoto, ou no nosso caso para o repositório do github. 

<hr>


**Commit**
Um commit é uma alteração específica em um arquivo (ou em vários arquivos). Ele é uma maneira de registrar uma alteração, permitindo que você volte a essa versão mais tarde se necessário. Você trocou a cor do botão e implementou uma funcionalidade? Faça um commit para deixar registrado e poder voltar a essa versão caso haja um erro no futuro. É importante ressaltar que existem algumas práticas que você pode seguir na hora de fazer um commit, o momento certo de realizar um, o comentário que você deve fazer em cada commit e etc (mas essas coisinhas são simples e veremos depois).
 
<hr>


**Merge**
O merge é a ação de mesclar alterações de um branch com outra.



<hr>


**Clone**
Clonar é a ação de criar uma cópia local de um repositório remoto em sua máquina. Essa cópia é uma versão completa do repositório e inclui todos os arquivos, histórico de commits e branches do repositório remoto.

<hr>


**Fork**
Um fork é uma cópia de um repositório do github para o seu um repositório do github. Isso permite que você faça alterações no código sem afetar o repositório original, enviando as alterações que você fez para a sua cópia.
 
<hr>

**Pull**
O pull é a ação de buscar as atualizações do repositório remoto e mesclá-las com o seu repositório local.

<hr>

## Na prática
Lembrando que, como o git é um software, você precisa ter ele instalado na sua máquina para utilizar os comandos abaixo. [Acesse o site oficial para baixar](https://git-scm.com/). 

<hr>

**Inicia um repositório**

```
git init  
```
 
<hr>

**Cria uma nova branch com o nome especificado**
```
git branch nome-do-branch  
```

<hr>


**Muda para a branch especificada**
```
git checkout nome-do-branch
```

<hr>


**"Avisa" que todas as alterações feitas estão prontas para serem enviados no próximo commit**
```
git add nome-do-arquivo
```

<hr>

**"Avisa" que todas as alterações feitas em um arquivo específico estão prontas para serem enviados no próximo commit**

```
git add . 
```

<hr>


**Registra uma nova versão do código com a descrição especificada**
```
git commit -m "Descrição das alterações feitas"
```

<hr>


**Envia as alterações para o repositório remoto**
```
git push origin nome-do-branch
```

<hr>


**Mescla as alterações da branch atual com a branch especificada**
```
git merge nome-do-branch 
```

<hr>

**Clona um repositório. Cria uma cópia local do repositório especificado**
```
git clone url-do-repositorio
```

<hr>


**Busca as atualizações da branch especificada no repositório remoto e mescla com o branch atual**
```
git pull origin nome-do-branch 
```


<hr>


**Busca as atualizações de todo o repositório remoto e mescla com o branch atual**
```
git pull 
```

<hr>

**Exibe com detalhes os últimos commits (com o nome do autor, data, mensagem do commit e o identificador/hash). Os commits mais recentes aparecem no topo da lista**

```
git log
```
 

<hr>

**Exibe o estado atual do repositório mostrando quais arquivos foram modificados (mas ainda não commitados), quais arquivos foram adicionados para serem commitados e se há arquivos não rastreados pelo Git.**

```
git status
```

<hr>

**_Se você está vendo isso pela primeira vez_** (ou uma das primeiras) e acabou ficando confuso, TUDO BEM! Isso é perfeitamente normal. É hora de praticar um pouquinho e com o tempo vai ficando mais claro. 


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


<hr>

Gostaria de contribuir ou melhorar alguma coisa que foi citada? Deixe nos comentários <3