Ferramentas

Git & GitHub

Comandos básicos

Enquanto que o Git é um ecossistema de conjunto de comandos para transferências de dados, Github é uma das plataformas de armazenamento no mercado.

img

Controle de versão

O controle de versão, também conhecido como controle de fonte, é a prática de rastrear e gerenciar as alterações, em um código de software. Os sistemas de controle de versão, são ferramentas de software, que ajudam as equipes de software a gerenciar as alterações ao código-fonte ao longo do tempo. Como os ambientes de desenvolvimento aceleraram, os sistemas de controle de versão ajudam as equipes de software a trabalhar de forma mais rápida e inteligente. Eles são ainda mais úteis para as equipes de DevOps, pois auxiliam a reduzir o tempo de desenvolvimento e aumentar as implementações bem-sucedidas.

Git e Github Primeiros Passos

Git

Criado pelo engenheiro de software, Linus Torvalds, conhecido por ter desenvolvido também, o núcleo Linux, o GIT, é um Sistema de Controle de Versões Distribuído — ou DVCS.

O Git, é capaz de gerenciar as inúmeras alterações em arquivos, mantendo todo o histórico de interação, por um ou inúmeros usuários em um projeto (repositório).

img

Vantagens

  • Histórico das modificações;
  • Integridade da versão final do documento;
  • Alto desempenho;
  • Gerenciamento inteligente de conflitos;
  • Facilidade em voltar no tempo;
  • Segurança.

Críticas

Uma crítica comum ao Git, é que pode ser difícil de aprender. Algumas das terminologias do Git, vão ser novas para os iniciantes e para usuários de outros sistemas, a terminologia do Git pode ser diferente, por exemplo: revert no Git, tem um significado diferente do que no SVN ou CVS. No entanto, o Git é muito capaz e disponibiliza muitos recursos aos usuários. Aprender a usar esses recursos, pode levar algum tempo. No entanto, uma vez aprendidos, podem ser usados pela equipe, para aumentar a velocidade de desenvolvimento.

img

ℹ️ Informação
Mas não se assuste, vamos perceber que é mais simples do que se pode imaginar!
Concentração total, na imagem abaixo:🤓🧠

O Git é composto por inúmeros comandos que você os conhecerá ao longo de uma jornada para gestão, compartilhamento e versionamento de seus arquivos. Porém, os comandos mais recorrentes serão apresentados e explorados conforme abaixo:

img

Contextualização

Git Correios

Para uma melhor compreensão, vamos aprimorar os conceitos citados acima, representando a nossa proposta de gestão de arquivos, como um simples envio de cartas pelos correios.

  1. Para uma melhor compreensão, vamos aprimorar os conceitos citados acima, representando a nossa proposta de gestão de arquivos, como um simples envio de cartas pelos correios.
  2. Agora você separou uma caixa de embalagem super maneira (stage) onde irá incluir (add) os itens de presente.
  3. Depois de selecionados, você irá lacrar (commit) a embalagem e informar os dados (message) do destinatário, parte MAIS importante.
  4. Como você mora em um condomínio, costuma-se deixar as encomendas (commits) na portaria (repositório local), para que seja realizada a coleta (push), de todas as correspondências.
✔️ Conclusão
E agora, quem vai retirar as correspondências ? Nesse caso é o papel dos Serviços de Hospedagem de projetos controlados.

img

Curiosidades

  1. Pesquise sobre um serviço citado acima;
  2. Apresente curiosidades positivas e ou negativas;
  3. Apresente os proprietários e a interação com a comunidade;
  4. Quais os outros serviços oferecidos por estas plataformas;
  5. Disponibilize todas as referências (links);

Instalação

O Git, é um projeto de código aberto maduro e com manutenção ativa, desenvolvido em 2005 por Linus Torvalds, o famoso criador do kernel, sistema operacional Linux. Um número impressionante de projetos de software, depende do Git para controle de versão, incluindo projetos comerciais e de código-fonte aberto. Os desenvolvedores que trabalharam com o Git, estão bem representados no pool de talentos de desenvolvimento de software disponíveis e funcionam bem, em uma ampla variedade de sistemas operacionais e IDEs (Ambientes de Desenvolvimento Integrado).

Acesse o site do Git para instalar a versão Windows:

img

Depois do git devidamente instalado, vamos inicializar nosso primeiro repositório.

Em nosso exemplo, criamos um diretório em C:\estudo\aula-git e depois clicamos com o botão direito do mouse para abrirmos o Git Bash.

img

🏆 Sucesso
Pense no Git como uma pasta que representa um banco de dados que armazena todas as alterações realizadas em seu diretório raiz. Habilite em seu sistema operacional a opção de visualizar arquivos ocultos.

Configurações globais

Precisamos agora, definir algumas configurações globais como nome do usuário e e-mail referente a sua identidade no repositório.

Mudando o nome e e-mail no Git:

git config --global user.name "Fulano de Tal"
git config --global user.email "fulanodetal@exemplo.br"

Confirmando se as configurações foram aplicadas:

git config user.email

Dentro de C:\estudo\aula-git, crie um arquivo seu_nome.txt e informe os dados abaixo:

  • Nome;
  • Email;
  • Um pouco sobre você.

Conceitos Básicos

O Git contém uma vasta lista de comandos necessários, para cada situação no dia-a-dia, o que temos que considerar inicialmente é; obter domínio dos principais comandos para iniciar um repositório local git init, adicionar documentos git add, gerar lotes git commit e transferir para o repositório público git push. Antes de iniciar a execução dos comandos básicos, vamos conhecer algumas expressões utilizadas no dia-a-dia:

  • Repositório Local: O Git contém um banco de dados que armazena todos dados dos arquivos adicionados em seu computador.
  • Repositório Público (origin): É um serviço de hospedagem de arquivos na internet, oferecidos por soluções como Github, Gitlab e Bitbucket.
  • Clonar: Quando você já tem um repositório público e pretende baixar na sua máquina.
  • Conflito: Quando um arquivo contém duas alterações paralelas, que impede de concentrar todo conteúdo no arquivo final.
  • Untracked files: São arquivos ainda desvinculados ao Git, que após executar o comando add, eles começam a ser enxergados pelo repositório.
  • Branch: Uma ramificação no git é um ponteiro para as alterações feitas nos arquivos do projeto.

Comandos Básicos

Iniciamos a interação com os principais comandos como se fossemos um serviço dos correios.

  • Init: este comando dá origem a um repositório novo, local ou remoto, ou reinicializa um repositório já existente.
  • Clone: este comando clona o código de um repositório, para sua manipulação em outro ambiente.
  • Commit: este comando move os arquivos da state area, para um repositório local.
  • Add: este comando adiciona um arquivo alterado, a uma staging area, ou seja, o prepara para ser vinculado a um commit.
  • Push: este comando envia arquivos de um repositório local, para um repositório remoto. No GitHub, por exemplo.
  • Pull: ao contrário do push, este comando traz um arquivo do repositório remoto, para o repositório local.
  • Merge: este comando serve para unir arquivos alterados, ao arquivo original de um projeto. Em outras palavras, é ele quem une os branchs com as commits.
  • Log: este comando permite a visualização do histórico de commits de um arquivo, usuário ou o acesso de uma versão específica.

Mão na massa

No Git Bash, iniciaremos com o comando abaixo:

git config --list

Será exibida uma lista de configurações definidas no Git, como nome e e-mail do usuário

Iniciando um repositório local

📌 Para fixar
Antes de realizar este procedimento, habilite em seu sistema operacional a visualização de arquivos ocultos e a extensão dos arquivos e veja o que acontecerá após os próximos passos 😲.
git init

img

📌 Para fixar
Observe que após o endereço do diretório, obtemos o nome master ou main, esta é a branch padrão no repositório. Iremos falar sobre branchs logo em breve.

Constantemente, você precisará acompanhar a situação do seu repositório, para isso, sempre executamos o comando abaixo:

git status

img

Nós podemos adicionar arquivos de duas formas, uma especificando cada arquivo e a outra, adicionando todos os novos e/ou arquivos alterados, através dos comandos abaixo:

// especificando os arquivos
git add file1.txt file2.txt

// adicionando todos os arquivos novos e ou alterados
git add .

Vamos para mais um status:

img

Hora de lacrar e selar (commit), nosso lote de novos arquivos e ou arquivos alterados para serem enviados aos correios (repositório público).

git commit -m "meu primeiro arquivo gerenciado pelo git"
✔️ Conclusão
Todo commit precisa receber uma mensagem (-m) bem declarativa, diante da sua finalidade de envio.

Hora de ver o que aconteceu, até agora:

git log

.gitignore

O arquivo sem nome, com a extensão .gitignore é um descritor de documentos, extensões e diretórios que não serão sincronizado, ao repositório remoto.

// Git Bash - criando o arquivo .gitignore

cd c:\estudo\aula-git

touch .gitignore
// .gitignore

rascunho.txt       //documento
target/            //diretório
*.class            //extensão 
*.exe              //instaladores
*.zip              //arquivos compactados

Lista de alguns exemplos de .gitginore, para determinados cenários.

🔔 Atenção
Qualquer documento que não faça parte do código fonte de seu projeto e/ou que possa ser obtido de outra maneira, deverá ser ignorado pelo git.

Logs

Vamos avaliar tudo o que aconteceu em nosso repositório local, logs, logs e +logs; Explore os recursos de log, para a exibição do histórico de seu repositório local, seguindo os requisitos abaixo: Em grupo, cada membro deverá gerar um arquivo com seu nome.txt e informar seu nome, email e um pouco sobre si. Elejam um integrante que receberá os arquivos e irá realizar todo o fluxo de versionamento em cada arquivo, para gerar o máximo de log possível e em seguida analisar as ocorrências.

Exemplo: Marcos foi eleito o integrante que irá receber os arquivos dos colegas, a cada arquivo recebido, Marcos deverá realizar os comandos abaixo:

git add marcela.txt

git commit -m "adicionando o arquivo da marcela"

Você pode usar o link Bitbucket para ajudar no exercício.

  • formatting;
  • online;
  • decorating;
  • shortlog;
  • graphs;
  • filter (amount / date / author / message / file / content ).

Descrição de mais alguns comandos Git

img

Branchs

Branch, no controle de versão de software, é a duplicação do diretório gerenciado pelo controle de versão. Cada arquivo pode ser modificado separadamente e em paralelo para que seu conteúdo possa ter versões diferentes.

Imagina que você foi designado a criar um algorítimo de verificação de dígitos válidos de cpf e no auge de sua inspiração em elaborar esta solução você se depara com a necessidade de "reescrever" toda a lógica, mas tem o receio de perder o que você já fez? Este é um cenário recorrente em projetos reais, garantir que um mesmo arquivo tenha conteúdos diferentes até que uma hora nos sentimos seguros em tornar um só (merge).

conta os caracteres
valida se numeros iguias
valida os dois ultimos dígitos
🔔 Atenção
Além dos comandos: commit, pull e push, será muito comum você realizar comandos para criar uma nova branch git checkout -b nova_branch e alternar entre as branchs locais com o comando git checkout nome_branch.

GitHub

Em suma, o GitHub é um serviço baseado em nuvem, que hospeda um sistema de controle de versão (VCS) chamado Git. Ele permite que os desenvolvedores colaborem e façam mudanças em projetos compartilhados, enquanto mantêm um registro detalhado do seu progresso.

Github Local e Remote

Passo a passo

Acesse o site do Github, crie uma conta ou faça o login:

img

ℹ️ Informação
Se for um novo usuário, após informar seus dados e senha, você precisará aguardar o recebimento de um e-mail, para confirmar e ativar sua conta.

Com a nossa cara

Vamos ajustar a nossa do Github, com algumas preferências e nossos dados pessoais.

img

Repositório remoto

Agora, iremos criar nosso primeiro repositório público para sincronizarmos ao nosso repositório local:

img

  • Repository Name: Nome do repositório, vai ser a pasta principal do seu projeto;
  • Description: Finalidade do seu projeto;
  • Public \ Private: Você ter repositórios públicos ou privados;
  • README: Arquivo com um descritivo do seu projeto;
  • .gitignore: Arquivo onde determinados, extensões, diretórios e/ou arquivos que não deverão ser sincronizados entre os repositórios públicos e privados.

Sincronizando os repositórios

Precisamos compreender que agora o nosso repositório local será sincronizado a um repositório remoto que pode ser para um servidor em sua própria rede ou para algum serviço na nuvem.

Chegou o momento de sincronizarmos todo o conteúdo existente em nossa máquina local para ser enviados para o repositório remoto e quem sabe futuramente ser obtido (clone) por você mesmo e pelos membros de sua equipe. Para que isso seja possível iremos realizar três comandos abaixo:

📌 Para fixar
Branch, no controle de versão de software, é a duplicação do diretório gerenciado pelo controle de versão. Cada arquivo pode ser modificado separadamente e em paralelo para que seu conteúdo possa ter versões diferentes.

GitBash

O Git Bash é o aplicativo para ambientes do Microsoft Windows que oferece a camada de emulação para a experiência de linha de comando Git. Bash é acrônico para "Bourne Again Shell". Shells são aplicativos terminais usados como interface em sistemas operacionais por meio de comandos gravados. O Shell é o padrão popular no Linux e no macOS. O Git Bash é o pacote que instala o Bash, alguns utilitários de bash comuns e o Git nos sistemas operacionais Windows.

img

  1. Ajustar a branch local com a remota
git branch -M main
  1. Definir o destino remoto para aonde irão os commits
git remote add origin https://github.com/glysns/aula-git.git
  1. iniciar a sincronização online (necessário estar conectado à internet)
git push -u origin main

NOTA: Se é a primeira que você irá realizar este procedimento de sincronizar seus arquivos para o servidor remoto, pode ser que uma autenticação seja necessária e que na maioria das vezes o procedimento realizar uma autenticação via navegador.

img

🏆 Sucesso
Se ocorreu com sucesso, os seus arquivos deverão estar visível no seu repositório remoto no GitHub.

Github Clone

Git Visual Interface

GitHub Desktop

Vamos criar \ localizar o repositório de exemplo chamado aula-git para exercitarmos a sincronização com o Github utilizando o Github Desktop.

img

A primeira etapa é conectar sua conta Github pelo Github desktop.

  1. Acesse sua conta pelo navegador de sua preferência
  2. Abre o Gihub Desktop
  3. Selecione o Menu -> File -> Options

Github Desktop

img

Clonando um repositório Como sabemos, trabalhar com Git e Github é transferir documentos do repositório local (seu pc) para um repositório remoto (serviço de hospedagem de aquivos).

Na primeira parte, nossa missão foi enviar os documentos para os "correios", nesta segunda fase, iremos obter as "correspondências".

Dentro do diretório C:\estudo, crie uma nova pasta clone, para recebermos a versão remota através do comando abaixo:

git clone https://github.com/seu-nickname/seu-projeto.git

img

ℹ️ Informação
Prontinho! 😀🤩, agora podemos voltar a editar nossos documentos.

Hora da verdade

Exercício 1

Selecione um membro do grupo para os demais clonarem o repositório e assim localizar o documento seu-nome.txt para a realização desta atividade.

ℹ️ Informação
O Dono do repositório, deverá adicionar os demais membros do grupo, em um repositório público chamado aula-git, e cada membro, deverá confirmar o e-mail que autoriza sua participação.
🔔 Atenção
Exceto o dono repositório, os demais se preferir podem apagar os seus repositórios aula-git. Esta é uma forma de não confundir os repositórios remotos

Todos os integrantes deverão:

  1. Realizar o clone, do repositório;
  2. Localizar o nome com seu arquivo
  3. Alterar o arquivo com seu nome e informar mais curiosidades sobre si
  4. Realizar o commit, para gerar o lote de alteração;
  5. Realizar o push, para enviar as alterações para o repositório remoto;
  6. Realizar o pull, para obter as alterações dos outros integrantes.

Exercício 2

Cada integrante, deverá eleger um documento de seus colegas e realizar no mínimo duas perguntas (add, commit, push). Em seguida, cada integrante avaliará seu documento (pull), responderá todas as perguntas, à medida que todos tenham os mesmos documentos com o mesmo conteúdo.

🚨 Alerta
Antes de iniciar a atividade, gerenciem a sequência das perguntas e respostas por participantes, exemplo: Marcos pergunta para Paula, Paula pergunta para Julia e etc.

NOTA: Os comandos se invertem em cada etapa deste exercício.

Readme

README é um arquivo com extensão .md (Markdown). Nele, registramos informações necessárias, para entender o objetivo do repositório ou projeto. README, é uma palavra em inglês, que traduzida fica LEIAME. Podemos Considerar o README o cartão de visitas do seu projeto.

Markdown

O Markdown é uma ferramenta de conversão de texto em HTML. Você escreve, usando textos simples de fácil leitura e fácil escrita e depois é transformado em um HTML válido.

#       H1
##      H2
...
######  H6

* Item A
* Item B

1. Item 1
1. Item 2
🏆 Sucesso
Acesse o link a seguir para poder conhecer alguns outros símbolos em markdown Link

Referências