Git além do básico
Tags: git, ptbr
Published: 2020-08-01 19:41:24

---
title: Git além do básico
published: true
description: 
tags: git, ptbr
cover_image: https://www.qsstechnosoft.com/wp-content/uploads/2019/05/Distributed-Version-Control-Banner-min-1.png
---

## Fala pessoal, tudo beleza?

Recentemente eu fiz uma apresentação focando em algumas operações que eu percebi que poderiam ser solucionadas com Git. O resultado foi bem bacana, e eu venho agora compartilhar com vocês nesse artigo.

Antes de mais nada, esse conteúdo é para iniciantes. Caso você tenha um nível intermediário ou avançado, provavelmente não irei abordar nada que você não conheça aqui.

## O básico do Git

Quando a gente começa a entender esse pequeno monstrinho, ficamos confortáveis com os seguintes comandos

    git init, inicia um repositório
    git clone, clona um repositório
    git add, adiciona um ou mais arquivos
    git commit, salva as modificações adicionadas
    git push, envia as modificações para um repositório remoto
    git pull, sincroniza seu repositório com um repositório remoto

Não é do intuito desse artigo abordar esses comandos, caso você não tenha intimidade com algum deles, sugiro ir na documentação do Git tirar suas dúvidas.

O problema é que se você apenas conhecer essa sequência de uso básica do Git, você irá ficar preso e não irá usufruir de todo o potencial do Git.

O Git é uma ferramenta de versionamento avançada, criada por Linus Torvalds, o mesmo que criou nada mais e nada menos que o Kernel do Linux.

Descentralizado e mais como um sistema de arquivos do que apenas um versionamento de mudanças, o Git tem muito potencial a ser explorado.

Porém esses tópicos avançados a gente pode deixar para um outro artigo. Por hora iremos adentrar em 6 casos de usos aonde o Git poderá dar uma mãozinha no seu dia a dia.

### Caso 1, e se você precisar enviar um código dentro de um arquivo com várias alterações?

Veja bem, as vezes você pode ter dentro de um mesmo arquivo códigos relacionados a tarefas diferentes. Como que a gente vai enviar apenas uma parte dessas alterações?

    git add -p

O parâmetro **-p** indica ao comando **add** que você quer selecionar trechos de códigos para enviar, e entra em um modo interativo aonde você seleciona um ou mais trechos para commitar.

### Caso 2, e se você precisar efetuar um pull antes de salvar suas alterações?

Casos estranhos sempre vão ocorrer, um ambiente nunca é igual ao outro e uma necessidade nunca é igual a outra. Um dia você pode precisar sincronizar seu repositório antes de efetivar suas alterações, como podemos fazer isso?

    git stash

O **stash** é um comando que informa ao Git para guardar todas as suas alterações em um local temporário, deixando seu repositório limpo. Em seguida você pode fazer o que quer que precisa ser feito e voltar suas alterações com um simples **git stash apply**.

Esse comando tem outras opções como **drop** e **list**, vale a pena investigar.

### Caso 3, e se você quiser criar e aplicar um diff?

Vários podem ser o motivo dessa necessidade, nunca podemos subestimar a infra estrutura brasileira por exemplo. E se você por algum acaso divino precisar enviar um **diff** das suas mudanças para um colega de trabalho, como podemos fazer?

    git diff > alteracoes.patch
    git apply alteracoes.patch

O Git tem já um **diff** interno para isso, por sinal é ele que vemos ao usar o **git status**. Basta usar **git diff** apontando uma saída para gerar o diff, e um **git apply** para atualizar seu repositório.

Detalhe, o git diff **não funciona** no Windows Terminal / CMD / PowerShell por conta do enconding! Use o Git Bash.

### Caso 4, e se você esquecer de adicionar algo ou quiser mudar o texto do commit?

É comum a gente adicionar um arquivo e esquecer outro, ou talvez deixar de mencionar o número da tarefa no commit. Como podemos reverter isso?

    git commit --ammend

O parâmetro **--ammend** no comando **commit** informa que você ou quer adicionar um arquivo esquecido, ou alterar o texto do commit.

Porém um detalhe, você só consegue adicionar algo nesse commit se ele não tiver sido sincronizado. Caso tenha sido sincronizado, você irá efetuar um merge!

### Caso 5, e se você quiser voltar no tempo?

Esse aqui vai ser o caso de uso mais *badaras* do artigo. Git tem essa funcionalidade de voltar no tempo? Sim!

    git checkout <commit>
    git checkout -

Estamos acostumados a usar o checkout para mudar de branchs dentro do nosso repositório, mas podemos também usar ele para alternar entre commits!

Como o Git vai além de simplesmente salvar as alterações dos arquivos modificados, ele te dá a possibilidade de navegar *no tempo*, porém tenha muito cuidado ao usar o checkout dessa forma.

Para voltar ao presente, basta executar **git checkout -** e você irá voltar ao último commit do seu repositório.

### Caso 6, e se você quiser visualizar o log com detalhes?

E esse é com certeza o mais tranquilo dos casos de uso, e se você quiser observar o log do seu repositório?

    gitk

Todo mundo tem essa ferramenta no seu computador, ele vem com a instalação do Git. Basta digitar **gitk** dentro do local do seu repositório e você irá acessar visualmente o log.
Fim

E é isso ai pessoal, espero que tenham gostado e que essa informação seja útil para você! Fique livre para perguntar algo no comentário, ou indicar algum erro que eu tenha feito. Abraços!

Vou deixar também meu [Linkedin](https://www.linkedin.com/in/kayo-hamid-a2805929/) para quem quiser entrar em contato! Abraços.