Uma nem tão breve introdução ao GitHub

Yuri Carvalho
Editorial 20 21
Published in
10 min readJun 17, 2020

Este tutorial tem por intuito fornecer os fundamentos básicos de Git e GitHub para que você, programador iniciante ou experiente, comece a utilizar estas ferramentas no desenvolvimento de projetos em grupo.

Conceitos Iniciais

O que é Git e GitHub?

Inicialmente, é necessário diferenciar essas duas palavras que, por muitas vezes, são usadas com o mesmo significado.

Git

Em resumo, Git é um sistema capaz de controlar o versionamento de arquivos. Através desse, é possível desenvolver projetos nos quais diversas pessoas contribuem simultaneamente para o mesmo, criando novos arquivos, editando e permitindo ainda que os mesmos existam sem o risco de suas alterações serem sobrescritas.

Sem o auxílio de um sistema como o Git, o desenvolvimento de um projeto no qual duas pessoas editam o mesmo arquivo seria caótico. Não importando o grau de complexidade do arquivo, o Git opera de modo a manter tudo em ordem a fim de evitar posteriores problemas.

Outra característica interessante, é a capacidade da criação de snapshots do projeto a qualquer momento, ou, como conheceremos posteriormente, branches. Para exemplificar, suponha que tenha um projeto de um site utilizando HTML, e deseja adicionar uma nova funcionalidade ao site, porém, não quer que a mesma esteja disponível para os demais usuários, apenas para você, para realizar testes e verificar a ocorrência de erros. Nestes casos, criamos um branch, uma espécie de uma cópia espelho e todas as alterações serão feitas no branch e não no projeto oficial. Uma vez testada e aprovada, a nova funcionalidade poderá, finalmente, ser adicionada ao código do projeto oficial sem maiores problemas, utilizando o que chamamos de merge.

Não se preocupe com os novos termos apresentados até aqui, com os exemplos a seguir, tudo se tornará mais claro!.

GitHub

O GitHub é um serviço web que aprimora e insere diversas funcionalidades extras ao Git. Nele é possível hospedar gratuitamente seus projetos pessoais, tornando seu desenvolvimento mais seguro.

Outro fator importante é que, atualmente, quase todos os frameworks, projetos e bibliotecas sobre desenvolvimento open source estão no GitHub, e é possível acompanhá-los através de novas versões, contribuir informando bugs e até mesmo atuar corrigindo-os.

Se você tem o desejo de começar uma carreira como desenvolvedor ou já o é, o GitHub será um dos seus melhores amigos daqui pra frente!

Pré-requisitos

Instalando o Git

O Git pode ser instalado através deste link para windows e deste link para Mac.

Para usuários de plataformas Linux/Debian como o Ubuntu, o git poderá ser instalado através do seguinte comando:

sudo apt-get install git

Ao terminar o download você estará apto a utilizar o GitBash no windows, ou operar os comandos git pela linha de comando nos demais sistemas.

Uma dica: Se você possui o Visual Studio Code instalado em sua máquina, poderá utilizar o Git no terminal do próprio programa. Além, disso, utilizar o Visual Studio Code tornará alguns comandos mais fáceis como veremos a seguir.

Criando a conta no GitHub

O GitHub não possui instalação, pois se trata de um serviço web. Para criar sua conta, acesse este link.
Após criar sua conta, você verá um botão verde no canto superior esquerdo da tela, ao lado de Repositories, escrito New, pelo qual será possível criar um repositório de acordo com a tela a seguir.

Criação de repositório

Um repositório nada mais é que a pasta do seu projeto. Na imagem acima, foi criado um repositório com o nome TutorialGitHub, de domínio público (é possível criar repositórios privados pagando uma determinada mensalidade), e com o arquivo README.md embutido, o qual contém uma descrição do projeto.
Para começar a entender as mecânicas do github é fundamental criar repositórios de teste inicialmente.

Após a criação do repositório ele estará disponível no seguite endereço: https://github.com/username/NomeDoRepositório, sendo username o nome de usuário utilizado no cadastro. Ao acessar essa URL, obtemos a seguinte resposta:

Tela principal do repositório

Esta é a tela principal do seu projeto, algumas informações presentes serão explicadas posteriormente. Por ora, note o botão Clone or Download, no qual será possível obter uma URL utilizada para “clonar” o projeto em nosso ambiente de estudo.

Configurando o Git

Para obter um acesso mais simplificado ao Git, são necessários alguns passos. Durante esta tarefa, determinaremos que sempre que necessário, serão fornecidos e-mail e senha ao GitHub, sem necessida de digitar toda vez que o acesso for requerido.

Para abrir um terminal Git no Windows, crie uma pasta no local de preferência, dê um clique com o botão direito do mouse e escolha a opção Git Bash Here. Em sistemas Linux/Mac, o Git estará disponível através do próprio console.

Então, com o terminal aberto, digite os seguintes comandos:

git config --global user.name "SEU NOME"
git config --global user.email "SEU E-MAIL"

As configurações inseridas ficarão guardadas no arquivo ~/.gitconfig, sendo ~ o seu diretório home. No Windows, por exemplo, encontramos esse diretório em: c:\Usuarios\username.gitconfig.

Clonando Repositórios

Até agora temos o Git configurado e o projeto criado no GitHub. O próximo passo é trazer esse projeto para a nossa máquina, esse procedimento é denominado clonar.
Então, sempre ao começar um projeto utilizando git, o procedimento padrão é criar o repositório no GitHub e, após, cloná-lo em sua máquina. O comando para clonar o projeto é:

git clone "url"

Ao executar este comando, o projeto será baixado em sua máquina e será criada uma pasta com o nome do projeto.

Comandos iniciais

Antes de entrarmos nos comandos básicos do Git, é necessário o entendimento de que os repositórios locais que temos em nossas máquinas (aqueles que clonamos do GitHub) são dotados de três “árvores” mantidas pelo git.
A primeira delas é a Working Directory, que contém os arquivos vigentes da pasta criada em sua máquina. A segunda é a INDEX, uma espécie de área temporária na qual as possíveis edições de arquivos serão mantidas, e finalmente a HEAD que aponta para o último commit (confirmação na alteração de arquivos) realizado.

Árvores do Git

Add e Commit

No mundo da programação, comumente ocorrem situações nas quais com o passar do tempo trabalhando em determinado projeto, começamos a esquecer o motivo de ter feito algum passo anterior ou que área do código necessita de atenção no momento. Com os comandos a seguir, aprenderemos a editar e salvar nossos arquivos quantas vezes quisermos e, quando tudo estiver pronto, salvaremos nossas alterações que futuramente serão enviadas ao nosso repositório.

Add

O comando:

git add "arquivo"

Realizará a ação de adicionar o referido arquivo que se encontra no diretório do seu sistema à uma área temporária chamada Index, essa operação faz parte do fluxo de trabalho no Git.
Podemos imaginar esta etapa de adição de arquivos ao Index, como pequenos checkpoints em nosso código, como quando necessitamos adicionar e testar novas funcionalidades ou fazer alguma alteração da qual não temos certeza se irá funcionar ou não. Sendo assim, é possível realizar testes ao passo em que construímos o código e salvar somente sua versão final com o comando commit que veremos posteriormente.

Veja um esquema de funcionamento do comando add:

Funcionamento do comando git add

Ao executar este comando, estamos informando ao git que o arquivo referenciado possivelmente entrará na próxima autalização do projeto.

Dica: Caso queira adicionar mais de um arquivo ao Index ao mesmo tempo, basta entrar com o comando “git add .” que todos os arquivos de um dado diretório serão adicionados.

Commit

O commit pode ser comparado aos registros em um diário, ao executar o comando abaixo:

git commit -m "comentário"

será realizado o procedimento de commit, no qual o Git acessará a área do Index, buscará os arquivos ali presentes e criará uma revisão com um número e um comentário que poderá ser visualizado por todos os colaboradores do projeto.
Podemos compara o comando git add com a demarcação de um terreno, podemos muitas vezes mudar a forma deste terreno enquanto pensamos na melhor maneira de construir, e o comando git commit é a construção dos muros do terreno em si, na qual será explicitada o porquê demarcamos o terreno daquele jeito ou ainda, o porquê alteramos determinada parte do mesmo. Perceba que é muito mais fácil realizar alterações na demarcação do terreno tendo uma visão virtual (Index) de sua construção do que construir os muros e então destruir, e então construir novamente.

Veja um esquema do processo de commit abaixo:

Funcionamento do comando git commit

Exemplo

Veja abaixo um exemplo básico de utilização de git e commit, seguidos estes passos:

  • Crie um arquivo chamado 42.txt na pasta raiz de seu repositório e adicione algum conteúdo a ele
  • Adicione o arquivo criado a lista de futuras alterações com o comando git add arquivo
  • Crie um registro commit informando na mensagem uma descrição da sua ação
echo "Houston, We have a problem!" > 42.txt //Este comando criará um arquivo chamado 42.txt e seu conteúdo será o argumento entre aspas logo após o comando echo. 
git add 42.txt
git commit -m "Criação de arquivo txt"

Suponhamos agora, que você cometeu um erro ao subir este arquivo no seu projeto, restando duas opções: reverter a ação ou sobrescrever. De modo a manter nossos registros anteriores e assim criar uma linha do tempo mais completa, iremos sobrescrever, seguindo estes passos:

  • Altere o texto do arquivo 42.txt para “Don’t Panic!”
  • Salve o arquivo e adicione a lista de alterações novamente
  • Crie um novo commit com a descrição da alteraçao feita
echo "Don't Panic!" > 42.txt
git add 42.txt
git commit -m "Alteração no texto do arquivo txt"

Portanto, um commit nada mais é do que adição/edição/remoção de um ou mais arquivos em um determinado repositório.

Push

Já aprendemos a adicionar arquivos ao index e a fazer o commit para o nosso repositório de modo a confirmar as alterações ou edições de arquivos, porém estes arquivos estarão apenas no nosso diretório criado em nossas máquinas. Como faremos para adicionar estes arquivos ao GitHub?

Para este fim, utilizaremoso comando git push. Sua sintaxe é bem simples, como segue abaixo:

git push

Geralmente neste ponto seria requisitado seu e-mail e senha, mas como configuramos anteriormente, basta aguardar o upload dos arquivos.

Branch

Já imaginou como seria interessante se em nossas vidas pudéssemos tomar uma decisão, ver os resultados e consequências e ainda tivéssemos a oportunidade de voltar atrás ou não?
Pois bem, uma branch é justamente isso, um espécie de uma realidade alternativa ou universo paralelo que, em algum momento, irá se juntar com a realidade principal.

Lembra do repositório que nós criamos? Ele nada mais é do que uma branch, é a nossa realidade principal, por isso, ele é denominado de Branch Master!

Um comum cenário que um grupo encontra ao trabalhar em um mesmo código é a necessidade da resolução de um erro, e para tal, não há uma solução única, de modo que diferentes desenvolvedores podem tentar diferentes soluções. E para não bagunçar tudo, eles criam uma branch, ramos do projeto principal, que são uma cópia exata dos mesmos. Ficando livres então para realizar alterações no código sem prejudicar o código principal.

Veja então um exemplo no qual iremos adicionar um novo arquivo de texto porém não no diretório principal e sim, criando uma nova branch para isso. A criação de uma nova branch é feita através do comando git checkout -b O comando git branch é útil para visualizar em qual branch você está em um determinado momento, apresentando um * na branch atual.

git checkout -b MundoParalelo
git branch
master
* MundoParalelo
echo "I'm your father!" > LukeDontOpen.txt
git add .
git commit -m "Inserção de novo arquivo"

Confira um esquema de todas as alterações feitas até aqui:

Exemplificação gráfica de um ramo

Merge

Merge nada mais é do que a fusão de duas branches. Suponha agora que o erro foi resolvido no projeto em questão e está tudo funcionando perfeitamente. Então, o código na branch está pronto para ser unido ao código da branch Master.
Prosseguiremos da seguinte forma:

git merge MundoParalelo

Nossa linha do tempo ficará assim:

Exemplificação do comando merge

Status

Com esse comando você saberá em qual branch se encontra, os arquivos que foram alteraos e quais já estão prontos para o commit.
Após executar qualquer ação, você terá um retorno muito similar ao abaixo:

git status
No ramo master
Mudanças a serem submetidas:
(use "git reset HEAD <file>..." to unstage)
modified: 42.txt
Arquivos não monitorados:
(utilize "git add <arquivo>..." para incluir o que será submetido)
LukeDontOpen.txt

Este comando é muito importante para obter um visão geral do repositório e o que será alterado no próximo commit.

Diff

De volta ao caso no qual um time de desenvolvedores resolveu um erro em um determinado projeto e agora você quer analisar quais foram as atitudes tomadas por eles. De modo a analisar o que foi alterado nos arquivos, utilizaremos o comando git diff nomedoarquivo.extensaodoarquivo

Esse comando retornará a parte do código que foi alterada acomapanhada de alguns símbolos, são eles:

  • O sinal “+”, indicando o que foi adicionado
  • O sinal “-”, indicando o que foi removido

Cuidado!
Não utilize o comando git diff após o comando git add em um mesmo arquivo. Não será possível visualizar as alterações pois as mesmas já estão no Index, prontas para sofrerem o commit.

E chegamos ao fim deste tutorial… Por agora!

De início pode parecer muito conteúdo, mas leia e releia quantas vezes necessitar e, além de tudo, pratique! Com a prática conheceremos os pontos que não dominamos ainda para então reforçá-los.

Boa prática! E ah, se puder, fique em casa!

--

--