Treinamento Git+github
Júlia Rizza
contato@juliarizza.com
Git
- Criado por Linus Torvalds
- Desenvolvido para o controle do Kernel do Linux
- Gratuito e open-source
- Distribuído (multiplos backups)
- Rápido
mas O que é o git?
Uma ferramenta de versionamento.
E o que é isso? Um sistema que registra as mudanças feitas em um arquivo ou um conjunto de arquivos ao longo do tempo de forma que você possa recuperar versões específicas.
E no que isso me ajuda? Além de facilitar o versionamento de softwares, pense nas vezes em que você já:
- Estragou um trabalho e não conseguiu voltar ao que ele era antes
- Modificou uma mesma parte de um projeto que outra pessoa e isso gerou um conflito (erros, mal funcionamento, sumiço de trabalho já feito!)
- Teve que ficar re-compactando cada versão do seu projeto modificado em um .zip e acumulou vários final.zip, final-2.zip, final-definitivo.zip, dessa-vez-vai.zip
Outros sistemas de versionamento
E O que é o github?
A mais famosa rede social de desenvolvedores.
E por que isso me interessa? O GitHub é uma fonte gigantesca de códigos-fonte das mais diversas linguagens, programas e empresas. Além disso, é uma ferramenta e tanto para desenvolver em equipe, fazer controle de bugs, receber ajuda de outros programadores e ainda divulgar o seu trabalho.
Me dê exemplos.
- Currículo - https://github.com/juliarizza
- Suporte - https://github.com/mozilla/firefox-ios/issues/1415
- Integração - https://github.com/integrations
Cadastre-se em: http://github.com
VAMOS
FAZER UM TOUR
Mas antes, vamos conhecer alguns termos do Git...
Dicionário git
Repositório: diretório do seu projeto;
README: arquivo de descrição do seu projeto;
Licença: arquivo que define as permissões dos usuários no repô;
Fork: fazer uma cópia do repositório de outro para o seu usuário;
Clone: fazer uma cópia do repositório para a sua máquina;
Pull: fazer uma atualização do repositório na sua máquina;
Push: enviar uma atualização do seu repositório;
Commit: "salvar" uma modificação do seu repositório;
Pull request: pedir para o dono do projeto "salvar" uma modificação que você fez no repositório dele.
VAMOS
FAZER UM TOUR
Faça seu cadastro no GitHub e vamos lá!
Download & Instalação
# Mac
$ sudo port install git-core +svn +doc
+bash_completion +gitweb
# Linux
$ sudo apt-get install git
Configurações Iniciais
Todos os commits utilizam suas informações de identidade para serem armazenados, por isso precisamos informar nome e email.
$ git config --global user.name "Joao Silva"
$ git config --global user.email joaosilva@exemplo.com
Para verificar outras configurações já aplicadas:
$ git config --list
Para saber sobre mais configurações disponíveis e personalizáveis, acesse: https://git-scm.com/book/pt-br/v1/Primeiros-passos-Configura%C3%A7%C3%A3o-Inicial-do-Git
Configurações de SSH
Você pode fazer troca de informações com o GitHub por dois métodos:
- HTTP: protocolo padrão da internet. Precisa se autenticar sempre que for fazer alguma interação com o GitHub.
- SSH: é uma forma de identificar computadores confiáveis sem ter que se autenticar. Basta gerar uma chave ssh no seu computador e colocá-la na sua conta do GitHub que todas as suas interações serão automáticas.
Configurações de SSH
No Git Bash ou Terminal:
$ ssh -v
$ ssh-keygen
Adicionando a chave ao GitHub:
- No seu menu, vá em Settings -> SSH and GPG keys
- Clique em New SSH key
- Dê um nome e copie o conteúdo do arquivo ~/.ssh/id_rsa.pub na seção Key.
- Clique em Add SSH key.
socorro!
De agora em diante, se quiser descobrir mais sobre os comandos do Git, você pode ver outras informações usando:
$ git help <verb>
$ git <verb> --help
Onde <verb> é o local onde deve ser inserido o comando que você deseja pesquisar.
Como o git funciona?
- Você modifica arquivos no seu diretório de trabalho (working directory).
- Você seleciona os arquivos que deseja lançar nesta nova versão, adicionando snapshots deles para sua área de preparação (stage/index).
- Você faz um commit, que leva os arquivos como eles estão na sua área de preparação e os armazena permanentemente no seu diretório Git junto de metadados do seu projeto (HEAD).
Iniciando um repositório
Repositório: é um local onde se acumula e armazena informações e arquivos de dados do seu projeto e do próprio git.
$ git init
Este comando irá criar um novo subdiretório chamado .git, um diretório oculto que contém todas as informações locais do seu projeto no git, incluindo logs, branches, configurações, entre outros.
branches
São ramos do seu repositório que não seguem a timeline normal. Eles existem de forma separada do ramo principal e só são adicionados ao ramo principal quando você realiza um merge.
- Integridade de código
- Organização
- Desenvolvimento paralelo
- Ainda mais distribuído
Para criar um novo branch:
Para acessar um branch:
Para apagar um branch:
Listar branches:
Dentro do branch tudo funcionará normalmente, como se você estivesse no master.
trabalhando com branches
$ git checkout -b <branch>
$ git checkout <branch>
$ git checkout -d <branch>
$ git branch
status de arquivos
Cada arquivo no nosso working directory apresenta um de dois status possíveis: tracked ou untacked. Arquivos untracked são aqueles que não estão sendo preparados para o commit, ou seja, não estão no index. Já arquivos tracked são aqueles que estão no index, inclusos no próximo commit.
Arquivos que já foram tracked também podem possuir três status diferentes: unmodified, modified ou staged. Arquivos unmodified continuam da mesma forma que nos commits anteriores, arquivos modified foram editados desde o commit anterior e arquivos staged foram preparados para o próximo commit.
Para adicionar um ou mais arquivos ao index utilizamos o comando git add.
ignorando arquivos
Nem sempre queremos salvar todos os arquivos que temos no projeto no nosso repositório. Por exemplo, arquivos de log são desnecessários pra qualquer parte do projeto a não ser no nosso desenvolvimento local. Por isso, podemos escolher ignorar alguns arquivos e não levá-los para nossas versões no git.
Para isso, basta criar um arquivo .gitignore e colocar em cada linha o arquivo que queremos ignorar, ou até mesmo um diretório ou uma extensão.
fazendo commits
O salvamento de uma modificação no nosso repositório do git só ocorre quando nós realizamos um commit. Para realizar um commit precisamos utilizar o comando apropriado e também passar uma mensagem explicando sobre o que se trata este commit:
Caso uma mensagem não seja passada diretamente no comando de commit, o git irá abrir um editor de texto para que escrevamos a mensagem.
Para ver commits anteriores, use o comando git log.
$ git commit -m "Descreva as mudanças deste commit"
repositórios remotos
Por exemplo, aqueles repositórios disponíveis no GitHub.
Existem várias formas de trabalharmos com um repositório remoto, seja "baixando" um ou simplesmente linkando um repositório local à um na nuvem.
FORK
É o ato de copiar um repositório de outra pessoa para o seu usuário, dessa forma você pode trabalhar no mesmo código que aquela pessoa estava trabalhando.
- Código distribuído
- Um dos princípios para que várias pessoas trabalhem no mesmo projeto
- "Tomar novos rumos", adicionando algo a um projeto que o original optou por não possuir
- Forma de controlar permissões de usuário
- Mantém a segurança e integridade do código
CLONE
É o ato de copiar um repositório remoto para sua máquina local, como se você fizesse o download dele. O repositório pode ser seu ou de outra pessoa e você poderá, inclusive, modificá-lo, mas será mais difícil enviar suas modificações se não tiver feito um fork.
- Pode ser combinado com o fork
- É aqui que atua o HTTP ou SSH
transformando em remoto
Caso você tenha criado um repositório local e queira fazer dele um repositório remoto, existem alguns passos a serem seguidos.
- Crie o repositório no GitHub.
- Adicione um link entre o repositório do GitHub e o remoto:
- Faça um push
$ git remote add origin <remote repository URL>
Obs: Origin e master são nomes escolhidos por convenção, mas você pode mudá-los.
push
Da tradução literal, push significa empurrar. Ou seja, estamos empurrando nosso projeto local para o repositório remoto.
Quando fazemos um push, o Git verifica automaticamente os arquivos que sofreram modificações, foram adicionados e removidos e realiza todas as mudanças necessárias no repositório remoto. Tudo sozinho!
$ git push origin master
pull
Da tradução literal, pull significa puxar. Ou seja, é o contrário do push e, neste caso, estamos puxando informações do repositório remoto para o local.
Da mesma forma que quando fazemos o push, o Git verifica todas as modificações e atualiza nosso repositório local sozinho.
$ git pull origin master
conflitos
Chamamos de merge o processo do Git verificar as modificações e atualizar o repositório sozinho. Porém, algumas vezes isso pode gerar um conflito. Isto ocorre pois pode ser que dois usuários tenham feito modificações de uma mesma informação e o Git não soube decidir qual modificação deveria ser aceita, então ele pede para o usuário resolver aquele conflito por ele.
Para resolver um conflito, basta identificarmos onde o conflito se encontra (indicações específicas de HEAD e '>'), apagarmos a parte que queremos substituir e deixar apenas a válida, e realizar um novo commit.
fazendo merge
Da mesma forma que o Git realiza um merge das nossas modificações automaticamente, podemos pedir que ele realize um merge de um branch para o outro.
Por exemplo, criamos um branch para adicionar uma nova modificação a um programa, e agora queremos colocar tudo que foi desenvolvido nesse branch no ramo master:
$ git checkout master
$ git merge <branch>
minicurso git+github
Júlia Rizza
contato@juliarizza.com
Treinamento Git+GitHub - LIT
By Júlia Rizza
Treinamento Git+GitHub - LIT
- 1,052