03/07/2018 17:02, postada por Arthur Rodrigues Batista

Introdução ao GIT+GITHUB

O que é o Git?

  • O Git é uma ferramenta de controle de versão.

  • É uma ferramenta extremamente útil principalmente quando se trata de projetos com mais de uma pessoa envolvida.

Como o Git armazena essas diferentes versões?

  • O Git não procura as diferenças entre as versões do artigo. Ele trabalha com os diferentes estados do arquivo.

  • A ferramenta Git tira fotos dos diferentes estados do documento (Snapshot).

História do Git

  • A empresa BitKeeper guardava todo o código do kernel do Linux.

  • Rompimento entre a Linux Foundation e a BitKeeper.

  • O Linux passou a não ser mais isento das taxas do serviço  da empresa de controle de versão.

  • Linus Torvalds resolveu desenvolver a sua própria ferramenta de controle de versão com melhorias em relação ao BitKeeper.

Afinal o que é o GitHub?

  • O GitHub nada mais é do que um repositório online que armazena os projetos versionados pelo Git. Funciona como se fosse uma rede social para compartilhamento de código open source.

Colocando a mão na massa:

  • Acesse: https://git-scm.com/downloads e baixe o Git.

  • Após a instalação abra o prompt de comando ou o terminal do Linux.

  • Credenciais iniciais:

    • Digite: git config --global user.name “User Name”  para configurar o nome de usuário.

    • Digite: git config --global use.email “email@server.com.br” para configurar seu email.

    • Digite: git config --global core.editor nano para configurar um editor de texto principal do GIT.

Inicializando o Repositório

  • Crie uma pasta para os arquivos utilizando o comando mkdir atividade_tutorial.

  • Entre na pasta: cd atividade_tutorial.

  • Inicie um repositório Git nesta pasta usando o comando: git init.

  • Verifique se o repositório foi inicializado ls -la.

  • Abra a pasta inicializada: cd git  e verifique os arquivos ls (Opcional).

Ciclo de vida do status dos arquivos:

Vamos ver na prática:

  • Abra seu editor de texto neste caso usaremos o Nano.

  • crie um arquivo readme.md: nano readme.md

  • Salve o arquivo apertando CRTL+O posteriormente CRTL+X para sair.

  • Agora verificaremos o status do nosso repositório através do comando git status.

  • Use o comando git add readme para adicionar este arquivo (staged).

  • Abra novamente o arquivo e altere o seu conteúdo depois verifique o status.

  • Novamente use git add readme para adicionar o arquivo modificado.

  • Use o comando git commit -m “comentário” para fazer um commit (captura).

Comando git diff

  • O comando git diff mostra as alterações feitas em um arquivo antes de você adiciona-lo ao repositório e commitar.

  • O comando git diff --name--only lista para você todos os arquivos que foram modificados. É um comando muito útil no caso de você ter uma lista muito grande de arquivos com modificações.

Comandos git log:

  • O comando git log mostra uma hash, o autor, a data e o comentário do commit.

  • O comando git log author=”nome” filtra os commits por autor.

  • O comando git log mostra uma hash, o autor, a data e o comentário do commit.

    O comando git log author=”nome” filtra os commits por autor.

    O comando git shortlog mostra em ordem alfabética os autores,  quais e quantos foram os commits.

  • O comando git log --graph mostra em forma gráfica o que está acontecendo com os commits.

  • Um comando complementar ao git log é o git show .

Desfazendo Modificações

  • O comando git checkout desfaz as alterações feitas antes do arquivo ser adicionado (modified).

  • O comando git reset HEAD serve para retirar o arquivo depois que ele já foi adicionado mas ainda não foi commitado (staged).

  • Para desfazer modificações pós commit utilizaremos git reset que possui 3 diferentes aplicações:

    • git reset --soft  : retorna o arquivo a fase staged.

    • git reset --mixed : retorna o arquivo antes da fase staged (modified).

    • git reset --hard : desfaz todas as modificações feitas (untracked).

Repositório Remoto

  • Acesse: https://github.com  e crie uma conta.

  • Crie um novo repositório de um nome e faça uma breve descrição.

  • Para conseguir subir seu código para um repositório remoto é necessário a uma chave SSH pública e uma chave SSH privada. Enfim como configurá-las?

  • No terminal do Linux digite o comando: ssh-keygen -t rsa -b 4096 -C “email” ou no Git Bash no Windows digite o comando: ssh-keygen -t rsa -b -C “email”.

  • Salve as chave na pasta padrão e opcionalmente coloque uma senha.

  • No terminal do Linux acesse a pasta ssh usando o comando: cd ~/.ssh/ faça uma verificação (lf) e usando o comando cat id_rsa.pub copie a chave.

  • No Windows acesse C/users/NameUser/.ssh abra o arquivo id_rsa.pub num editor de texto e copie-o.

  • Na sua conta do GitHub acesse settings > SSH and GPG keys.

  • Crie uma nova chave com um novo nome e cole o conteúdo da chave pública no campo key.

  • Para validar a chave no terminal do linux ou no Git Bash no Windows copie o código: ssh -T git@github.com e siga os passos de acordo com o mostrado em tela.

  • Para ligar o repositório local com o repositório do GitHub :

    • Com https:

      • git remote add origin https://github.com/NomeDoUsuario/nome_do_repositório.git ou:

    • Com a chave SSH:

      • git remote add origin git@github.com:NomeDoUsuario/nome_do_repositório.git

    • git push -u origin master

Enviando mudanças ao GitHub

  • Verificar o status do nosso repositório através do comando git status.

  • Use o comando git add . para adicionar este arquivo (staged).

  • Use o comando git commit -m “comentário” para fazer commit.

  • Use o comando git push origin master para enviar ao GitHub.

Clonando repositórios do GitHub

  • Depois de encontrar o repositório a ser clonado copie o link clicando no botão “Clone or download”

  • No terminal use o comando git clone LinkCopiado NomeDesejado para clonar o repositório e nomeá-lo com o nome passado.

  • Caso não seja passado um nome o projeto terá o mesmo nome de qual foi clonado.

Fazendo um Fork

  • Para fazer uma cópia de um projeto(Fork) basta clicar no botão Fork na página do repositório e selecionar para qual repositório deseja fazer a cópia

  • Usado quando se deseja trabalhar com o repositório de outro usuário, fazer correções e enviá-las ao dono do repositório, ajudando-o assim a tratar possíveis falhas em seus programas.

Sincronizando os arquivos com o GitHub

  • Para trazer todas as modificações que estão no github para o seu projeto local basta usar o comando: git pull

  • Quando uma máquina realiza o git push as outras máquinas que utilizam o projeto alterado devem realizar git push

Ramificando um projeto

  • Costumamos usar branches quando desejamos adicionar funções em um projeto e não queremos correr o risco de estragar o que já está pronto e além disso você precisa manter essas alterações em mais de um computador

  • o conceito de branch, que é justamente ramificar o seu projeto em 2, como se cada um deles fosse um repositório, e depois juntá-lo novamente.

  • Para saber o branch em que se está fazendo as alterações basta usar o comando git status

  • O branch padrão de um projeto é o master

  • Para criar um novo branch usamos o comando git checkout - b NomeBranch

  • O branch criado localmente deve ser enviado ao GitHub para que você possa fazer alterações neste branch em outros computadores, isso pode ser feito através do comando git push origin NomeBranch

  • Para mudar do branch atual para outro basta utilizar git checkout branch, para voltar para o master por exemplo usamos git checkout master

  • Para remover um branch usamos o comando git branch -D NomeBranch

Juntando as pontas

  • Se queremos trazer as alterações do branch master para o atual devemos fazer uma operação chamada merge através do comando git merge master

  • Se não houver nenhum conflito basta fazer um commit e a mesclagem já estará completa.

  • Caso haja conflito você é o responsável por solucioná-lo, fazer o git add e o git commit

  • Antes de fazer o merge você pode pré-visualizar as alterações com o comando git diff BranchOrigem BranchDestino

Ignorando arquivos

  • Muitas vezes, você terá uma classe de arquivos que não quer que o Git automaticamente adicione ou mostre como arquivos não monitorados.Nestes casos, você pode criar um arquivo contendo uma lista de padrões a serem checados chamado .gitignore

  • As regras para os padrões que você pode pôr no arquivo .gitignore são as seguintes:

    • Linhas em branco ou iniciando com # são ignoradas.

    • Você pode terminar os padrões com uma barra (/) para especificar diretórios.

    • Você pode negar um padrão ao iniciá-lo com um ponto de exclamação (!).

    • Padrões glob comuns funcionam.

Mas os que são “padrões glob”?!

  • Padrões glob são como expressões regulares simples que os shells usam.

    • Um asterisco (*) significa zero ou mais caracteres;

    • [abc] condiz com qualquer um dos caracteres de dentro dos colchetes (nesse caso, a, b, ou c);

    • Um ponto de interrogação (?) condiz com um único caractere;

    • Os caracteres separados por hífen dentro de colchetes ([0-9]) condizem à qualquer um dos caracteres entre eles (neste caso, de 0 à 9).

Versionamento com tags

  • Git tem a habilidade de criar tags em pontos específicos na história do código como pontos importantes. Geralmente as pessoas usam esta funcionalidade para marcar pontos de release (v1.0, e por aí vai).

  • Podemos verificar as tags atuais com o comando git tag

  • Para adicionar uma nova tag usaremos a instrução:

  • git tag -a 1.x.x IdCommit -m “comentário”

    • -a para adicionar;

    • 1.x.x é o nome da versão;

    • IdCommit hash SHA-1 que identifica o commit;

    • -m para fazer um breve comentário sobre a versão, caso o comentário não seja fornecido entre aspas, o editor padrão será aberto para fazê-lo.

  • git push origin master para enviar a tag para o branch master do GitHub

Referências

  1. http://rogerdudler.github.io/git-guide/index.pt_BR.html

  2. https://tableless.com.br/tudo-que-voce-queria-saber-sobre-git-e-github-mas-tinha-vergonha-de-perguntar/

  3. http://codexico.com.br/blog/linux/tutorial-simples-como-usar-o-git-e-o-github/

  4. http://marklodato.github.io/visual-git-guide/index-en.html

  5. https://git-scm.com/book/pReferênciast-br/v1/