Desmitificando o Git e o GitHub — Parte 1

Thiago Paschoal
Reunião de Qa Sampa
7 min readApr 15, 2018

Sabe aqueles momentos em que você está no cliente para apresentar as novas telas e funcionalidades do projeto e ele diz que é isso mesmo e depois pede algo a mais? Não entendeu onde eu quero chegar com isso? Vamos pensar no seguinte cenário:

Você foi requisitado para desenvolver um novo app para a empresa do cliente XPTO. Você, junto do cliente levantam os primeiros requisitos, analisam quais são factíveis de entrar naquela sprint e discutem um layout inicial (básico) da tela. Pois bem, você pega tudo isso e começa a desenvolver a primeira versão do projeto. O cliente aprova, diz que era aquilo que ele queria e pede para acrescentar um campo novo na tela.

Você guarda (zipa) este projeto, tranca ele as sete chaves e cria um novo projeto a partir do anterior e coloca o campo que o cliente pediu e assim sucessivamente a cada nova mudança que o cliente pede no aplicativo.

Mas chega um dia em que o cliente, pede para que você volte com a segunda versão do projeto. E agora? Será que eu ainda tenho o arquivo do projeto que tinha aquela segunda versão? Como eu vou puxar no histórico de alterações se tudo que eu fiz foi local? Como eu vou manter o controle das versões que são geradas a partir de cada atualização que eu realizar?

Bom, e se eu te dizer que existe uma forma de resolver isso. O que você iria achar? Eu ia achar um máximo, mas como? Vamos usar o Git para resolver o nosso problema. Legal, mas o que é Git? Como ele funciona?

O Git nada mais é, do que uma ferramenta de controle de versão distribuída, desenvolvida por Linus Torvalds. O que isso significa? Significa que diferente do SVN que mantém apenas um repositório central de versionamento de código, com o Git é possível que cada desenvolvedor crie o seu próprio repositório central. (daí a ideia de controle de versão distribuído). Fora isso, com o Git você consegue trabalhar de forma off-line, ou seja, não dependendo de o servidor remoto estar disponível.

A ideia deste artigo, é mostrar a você desde de como inicializar um repositório Git no seu sistema seja ele Windows, Linux, etc., até usar alguns comandos básicos na linha de comando. Comandos estes, que são: adicionar arquivos e salvar (consolidar) arquivos.

Lembrando que tudo que nós fizermos no decorrer do artigo, será dentro da raiz do projeto. No meu caso no diretório /home/thiago/dev/app.

Inicializando o Git (init)

Para que o Git inicie o gerenciamento do seu projeto, você deve informar o comando abaixo dentro do seu terminal bash na pasta-raiz do seu projeto.

git init: Inicializa um repositório a partir do diretório especificado

Até aqui, tudo certo porém eu apenas criei (inicializei) um repositório vazio. Se você tiver a curiosidade de ver o que tem dentro desta pasta oculta que o git cria verá que ela está contida todas as configurações do git para versionar um projeto. Então vamos começar a versionar os nossos arquivos.

Adicionando arquivos para serem versionados

Bom já inicializei o repositório, meu projeto agora está sendo gerenciado pelo git mas agora precisamos adicionar os arquivos do projeto para serem gerenciados também. Antes de falarmos sobre o comando, vamos ver como está o status dos arquivos que foram modificados ou se temos novos arquivos para adicionar. Podemos fazer isso dizendo ao git qual o status do nosso projeto.

git status: Permite que você veja o estado atual do seus arquivos no git

Note que eu utilizo o comando git statuse a mensagem que ele me retorna, significa que os arquivos que existem neste diretório ainda não são controlados ou melhor versionados pelo git (Arquivos não monitorados / Untracked files).

A partir do momento que eu adiciono o arquivo no git usando o comando git add index.htmle depois utilizo o comando git status novamente note que a cor do arquivo já muda. Isso é uma coisa boa! Significa que o arquivo já está sendo controlado pelo git, porém ele ainda não está salvo.

Adicionando o diretório de arquivos

Existem também, algumas variações para este comando. Você pode adicionar arquivos, adicionando diretamente a pasta onde eles estão contidos.

git add css/: Adicione todos os arquivos que estão dentro da pasta css.

Adicionando arquivos por extensão

Por fim, você pode combinar o comando git add com alguma extensão. Por exemplo, eu quero dizer para o git “adicionar todos os arquivos que terminam com .js”.

git add *.js: Adicione todos os arquivos que possuem extensão .js.

Consolidando arquivos

Depois que você já adicionou os arquivos chegou a hora de você salvar esses arquivos dentro do git. Caso você não esteja entendendo o que estou dizendo agora, provavelmente você já deve ter ouvido falar da palavra commitar, por exemplo alguém dizer assim: “Cara comita esse arquivo pra mim, por favor.”. Commitar, neste caso tem a mesma ideia da palavra salvar e consolidar.

O Git é dividido em três partes:

  • Workspace: Sua IDE que você está trabalhando, pode ser Eclipse, NetBeans ou Intellij
  • Stage: É nesta área em que os arquivos são adicionados e comitados.
  • Repositório: Onde os arquivos são enfim levados para o repositório remoto.

Ficou confuso sobre o que significa a stage? Resumidamente, é na stage onde caso o servidor remoto esteja offline, os arquivos são salvos e ficam ali guardados para quando o usuário estiver online, os arquivos serão então enviados para o servidor remoto.

Para fazermos isso, deve se passar esse comando:

git commit -m "initial commit"

Acho que você deve estar se perguntando. Primeiro o que significa esse hash maluco que apareceu agora? Por que que eu devo passar essa flag -m para o comando? Calma, vou te explicar de uma forma bem tranquila e simples.

Primeiro vou começar pelo mais fácil. Quando eu passei essa flag -m no comando, eu disse ao git para registrar, salvar o que foi alterado neste commit que estou fazendo. Caso você não informe a flag -m, o git irá abrir um editor de texto dele que parece muito com VI do Linux (para sair dessa tela, digite apenas o comando :wq), pedindo que você informe uma mensagem para este commit. Isso é muito utilizado e ajuda demais quando você quer procurar alguma alteração que você fez anteriormente no histórico de versões deste arquivo.

Agora, esse hash significa que cada commit que você faz, tem sempre um id único, melhor possui um endereço único dentro da stage. Você pode combinar esse hash principalmente em comandos para visualizar um commit.

Visualizando um commit

Enfim, agora o momento que todos queriam ver. Como eu consigo visualizar um commit já feito? Muito simples. Eu posso utilizar apenas o comando isoladamente ou combinado com o hash do commit que eu fiz anteriormente.

git log

Note que o legal é que esse comando além de nos trazer o número do commit ele traz também quem fez o commit (é bom para fazer algumas delações), a data e hora de quando este commit foi feito junto com a mensagem que você escreveu.

Como instalar?

Bom, para instalar o Git é bem simples. Se você estiver utilizando Linux abra o seu bash (Ctrl + Alt + T) e digite o comando sudo apt install git e aguarde até que o Linux finalize a instalação.

No Windows você deve acessar o site ‘https://git-scm.com/’ e clicar no botão na imagem abaixo

No meu caso apareceu Linux, porque é o sistema que está no meu notebook mas fique tranquilo, caso o seu sistema seja Windows automaticamente o botão estará como “Downloads for Windows”. A instalação é bem simples também, só é mais braçal porque você precisa baixar um executável e ir clicando Next, Next,…

Depois disso apenas clique com o botão direito do mouse no diretório onde está o seu projeto e clica na opção Git Bash Here. Feito isso é só usar e ser feliz (os comandos não mudam de sistema operacional para sistema operacional).

Fico por dentro, do que vem por aí

Neste artigo abordamos desde como é processo de instalação do Git até os comandos de salvar, adicionar e visualizar commits já realizados. No próximo artigo abordaremos questões de como enviar suas atualizações para o repositório remoto e falaremos também sobre o Github e suas funcionalidades.

Caso queira se aprofundar no assunto, no site do próprio Git (no item de Documentation) tem uma documentação bem legal sobre o assunto. Lá você irá encontrar muitas dicas e boas práticas para commits, branches entre outras funcionalidades.

Recentemente tivemos um meetup de Git e GitHub para iniciantes ministrado pela Débora Fernandes na Campus Code. Escrevi uma série com as fotos de como foi o evento. Vou deixar o link para vocês

https://medium.com/series/qasampameeting-ef06535a7949

Aproveitando, não deixe de acompanhar o medium do QASampa. Nossos moderadores estão sempre postando artigos bem legais e de conteúdo atualizado.

Siga o QA Sampa Meeting!

--

--

Thiago Paschoal
Reunião de Qa Sampa

Systems Analyst at Inmetrics with focus in DevOps. I like technology, programming and write articles to helpful others people. Twitter: @ThiagoPaschoal3