Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Aceleradora - Git

Aceleradora - Git

Apresentação para Aceleradora/Turma 7

Thiago Xavier

May 22, 2015
Tweet

More Decks by Thiago Xavier

Other Decks in Technology

Transcript

  1. A c e l e r a d o r

    a - Tu r m a 7 GIT E GITHUB como versionamos nosso código no dia a dia.
  2. AGENDA 2 • Controle de versão • Porque usar? •

    Como funciona? • Controle de versão centralizado e distribuído • Git • Commit • Visualização • Ignorando arquivos • Prática! • Branches • Merges • Repositórios remotos • Github • Prática!
  3. CONTROLE DE VERSÃO • Registra as mudanças feitas nos arquivos

    de um projeto ao longo do tempo. • Caso alguma alteração precise ser revertida, é só retroceder para a versão anterior. • Permite visualizar quem foi o último a fazer as alterações e o que foi alterado no arquivo. 3
  4. PORQUE USAR? • Compartilhamento de arquivos • Versiona as alterações

    nos arquivos • Controle de histórico: • Facilidade em reverter algo, caso aconteça algum problema. • Trabalho em equipe: • Permite que várias pessoas trabalhem sobre os mesmos arquivos. • Utilização de Tags: • Possibilita marcar versões de código estável. • Utilização de branches: • Possibilidade de divisão do projeto em outras linhas de desenvolvimento (cuidado!) 4
  5. COMO FUNCIONA? • Repositório: • Local onde é armazenado todo

    o histórico de evolução dos arquivos do projeto, registrando toda e qualquer alteração feita em cada item versionado. • Área de trabalho: • Local com a cópia dos arquivos do projeto que é monitorada para identificar as mudanças realizadas. 5
  6. CONTROLE DE VERSÃO CENTRALIZADO 6 No controle de versão centralizado

    há um único repositório e várias cópias de trabalho que se comunicam apenas através do repositório central: • Controles de versão centralizados mais utilizados: • CVS; • SVN.
  7. CONTROLE DE VERSÃO DISTRIBUÍDO 7 No controle de versão distribuído

    cada desenvolvedor possui um repositório próprio acoplado a uma área de trabalho: • Controles de versão distribuídos mais utilizados: • Git; • Mercurial.
  8. GIT 8 • Algumas premissas que se mantém desde a

    sua criação: • Velocidade; • Design simples; • Suporte robusto a desenvolvimento não linear (milhares de branches paralelos); • Totalmente distribuído; • Capaz de lidar eficientemente com grandes projetos como o kernel do Linux (velocidade e volume de dados). • Talvez nem tanto - https://www.youtube.com/watch?v=X0VH78ye4yY Criado em 2005, pela comunidade de desenvolvedores do Linux (especialmente Linus Torvalds) para versionar o código do kernel.
  9. CRIANDO UM REPOSITÓRIO • git init: • Qualquer diretório pode

    ser um repositório • Tudo que o git precisa fica dentro do diretório .git • Basta apaga-lo e o repositório local é removido • git clone: • Clona um repositório remoto com todo o seu histórico 9
  10. COMMIT • O commit é quando submete-se a alteração local

    (área de trabalho) para o repositório local. • Cada commit gera uma ou mais modificações feitas na área de trabalho (stage), identificando ele com um hash único. • Cuidar a nomenclatura das mensagens: • É importante ter um padrão: 10 • Colocar o #número da task. • Colocar o nome do par que realizou aquele commit. • Colocar uma breve descrição que indique do que se trata aquela alteração. • Criar commits pequenos que façam sentido para quem lê o histórico.
  11. VISUALIZAÇÃO - STATUS/DIFF/LOG/SHOW • git status: • Permite visualizar as

    alterações no workspace local. • git diff: • Permite visualizar as alterações realizadas antes de realizar um commit. • git log: • Permite visualizar o log com todos os commits realizados. • git show <hash>: • Permite visualizar as alterações de algum commit específico. 11
  12. IGNORANDO ARQUIVOS • As vezes precisamos ignorar alguns arquivos no

    nosso projeto que são específicos de cada máquina em que o projeto rodar. 12 • Criamos um arquivo chamado .gitignore na raiz do projeto especificando tudo o que queremos que o git não versione para nós.
  13. BRANCHES - CUIDADO! • Branches são cópias do projeto (na

    verdade não são); • Podem ser evoluídos independentemente; • Geralmente utilizados para implementar alguma feature ou resolução de algum bug sem afetar o master. • git checkout -b [branch_name] • Cria um branch e vai para ele • git checkout [branch_name] • Alterna entre os branches • git branch -a • Lista todos os branches (remotos e locais) • git push origin :[branch_name] • Remove o branche remoto 14
  14. MERGES • É a mesclagem do mesmo arquivo alterado por

    duas pessoas (ocorre com muito mais freqüência ao utilizar branches) • Quando isso essa mesclagem acontece podemos ter: • Merge automático • Conflito 15 Resolução manual de conflitos:
  15. REPOSITÓRIOS REMOTOS • São versões do código hospedadas em algum

    lugar na internet ou rede interna • Github • Gitlab • Heroku • Podemos ter mais de um repositório remoto para o mesmo projeto. • git remote -v • Lista os repositórios remotos. • git remote add [shortname] [url] • Adiciona um repositório remoto. • git remote remove [shortname] • Remove um repositório remoto. 16 Precisamos compartilhar o nosso código com as outras pessoas
  16. ENVIANDO SEU CÓDIGO - PUSH/PULL • Push: • Envia o

    código comitado em seu repositório local para o repositório remoto especificado: • git push [remote-name] [branch-name] • Pull: • Busca as alterações no repositório remoto e atualiza seu repositório local • git pull • git pull —rebase • git config --global branch.autosetuprebase always 17
  17. GITHUB 18 Um serviço web (rede social?) para hospedagem de

    repositórios Git. • Interface: • web; • desktop; • mobile. • Muitas ferramentas para colaboração: • wiki; • tasks; • bug tracking; • pull requests.
  18. INDO ALÉM • Stash • Alias • Pretty Log /

    Tig • Tags • Git-Crypt 20 http://gitimmersion.com/ http://www.ndpsoftware.com/git-cheatsheet.html http://gitref.org/ https://gist.github.com/1b596c29ae9e596e91be https://github.com/tiimgreen/github-cheat-sheet
  19. EXERCÍCIOS / DESAFIOS • Criar sua conta no github •

    Criar um repositório no github • Criar um repositório local e adicionar o repositório remoto • Comitar os exercicios de java - Um commit por exercício • Fazer push dos arquivos • Trocar de computador e fazer o clone do repositorio • Criar algum(s) alias • Criar sua própria formatação de log (pretty print) • Pesquisar sobre stash e como ele pode ser útil • Pesquisar como utilizar e porque tags são úteis? 21