controlo de versões distribuído com git

35
http://netpont o.org Controlo de Versão Distribuído com Git Caio Proiete 17ª Reunião Presencial - 22/01/2011

Upload: comunidade-netponto

Post on 27-Jun-2015

1.550 views

Category:

Technology


2 download

DESCRIPTION

O Git é um sistema de controlo de versões distribuído altamente performante, extensível e potente, que está a ser adoptado cada vez mais por developers de diferentes plataformas incluindo .NET. Nesta apresentação o Caio irá mostrar os primeiros passos com o Git, como trabalhar em equipa sem pisar os pés uns dos outros e permitindo uma gestão mais fácil dos artefactos de um projecto, incluindo código, documentação e binários. Irá partilhar as suas experiências de uso do Git no dia-a-dia em equipa, as reacções e as melhorias que Git trouxe, e quais as convenções e fluxos de trabalho que utiliza.

TRANSCRIPT

Page 1: Controlo de Versões Distribuído com Git

http://netponto.org

Controlo de Versão Distribuído com GitCaio Proiete

17ª Reunião Presencial - 22/01/2011

Page 3: Controlo de Versões Distribuído com Git

Caio Proiete

Consultor Independente / Freelancer–> http://caioproiete.net

Formador @ CICLO–> http://ciclo.pt

Microsoft MVP, MCT, MC*.net

Page 4: Controlo de Versões Distribuído com Git

Agenda

• Introdução• Como usar / comandos básicos• Desenvolvimento em paralelo• Partilha de repositórios em equipa• Workflows mais comuns

Page 6: Controlo de Versões Distribuído com Git

Git: O que é isto?

• Sistema de Controlo de Versões–Desenvolvimento distribuído–Óptimo para desenvolvimento não-linear– Funciona fora do Visual Studio (!)–Rápido. Muito rápido!–Gratuito e Open Source– – Funciona fora do Visual Studio (!)

Page 7: Controlo de Versões Distribuído com Git

Git: O que é isto? (cont.)

• Começou a ser desenvolvido em Abril de 2005 pelo Linus Torvalds. É utilizado para manter o kernel do Linux há 5 anos

• Actualmente mantido pelo Junio Hamano com outros 280+ developers

Page 8: Controlo de Versões Distribuído com Git

Git: I can haz download?

http://git-scm.com

Page 9: Controlo de Versões Distribuído com Git

Git != GitHub

http://git-scm.com

http://github.com

Site oficial, documentação, download, etc...

Serviço que permite alojar repositórios via Internet

Page 10: Controlo de Versões Distribuído com Git

Desenvolvimento Distríbuido...

Page 11: Controlo de Versões Distribuído com Git

Desenvolvimento Centralizado

Page 12: Controlo de Versões Distribuído com Git

Desenvolvimento Distribuído

Page 13: Controlo de Versões Distribuído com Git

Vantagem?

• Pode fazer TUDO sem precisar do servidor!–Consultar toda a história do projecto desde o

primeiro commit;–Obter versões mais antigas do projecto;– E o mais importante: Efectuar commits!!

Page 14: Controlo de Versões Distribuído com Git

Escrever a história de forma linear

Page 15: Controlo de Versões Distribuído com Git

Git for Windows: msysgit

Page 16: Controlo de Versões Distribuído com Git

Git for Windows: msysgit

Page 17: Controlo de Versões Distribuído com Git

Comandos básicos do Git

• git init–Criar um novo repositório do git

• git status–Mostrar o que mudou desde o último commit

• git add– Escolher o que fará parte do próximo commit

• git commit–Gravar um novo commit

Page 18: Controlo de Versões Distribuído com Git

Comandos básicos do Git (cont.)

• git log / gitk [2]

–Consultar os commits (história)• git reset–Mover o apontador “HEAD”

• git config–Configurar opções globais ou do repositório

[2] Não é exactamente um comando, mas uma aplicação

Page 19: Controlo de Versões Distribuído com Git

Comandos básicos do Git

demonstração

Page 20: Controlo de Versões Distribuído com Git

Comandos básicos do Git (cont.)

Page 21: Controlo de Versões Distribuído com Git

Ficheiro .gitignore#Ignore thumbnails created by WindowsThumbs.db

#Ignore files created by Visual Studio*.suo*.user[Oo]bj[Bb]in[Dd]ebug*/[Rr]elease*/_ReSharper*/

Page 22: Controlo de Versões Distribuído com Git

Desenvolvimento em paralelo

• git branch– Listar/Criar/Apagar branches

• git checkout– Saltar entre branches (e não só)

• git merge– Efectuar merge de branches

• git mergetool– Ferramenta de merge (resolver conflitos)

Page 23: Controlo de Versões Distribuído com Git

Desenvolvimento em paralelo

demonstração

Page 24: Controlo de Versões Distribuído com Git

Partilha de repositórios em equipa

• git clone–Obter uma cópia de um repositório remoto

• git pull–Receber actualizações de um repositório

• git push– Enviar actualizações para um repositório

Page 25: Controlo de Versões Distribuído com Git

Partilha de repositórios em equipa

demonstração

Page 26: Controlo de Versões Distribuído com Git

Workflows mais comuns

Page 27: Controlo de Versões Distribuído com Git

Subversion-Style

Page 28: Controlo de Versões Distribuído com Git

Descentralized but centralized

Page 29: Controlo de Versões Distribuído com Git

Integration Manager

Page 30: Controlo de Versões Distribuído com Git

Dictator and Lieutenants

Page 31: Controlo de Versões Distribuído com Git

Questões?

Page 32: Controlo de Versões Distribuído com Git

ReferênciasGit Scm - Site oficial do Git

– http://git-scm.com

Posts sobre Git em meu blog– http://caioproiete.net/pt/tag/git/

Pro Git (e-book)– http://progit.org

Git Ready (tutorial / tips)– http://www.gitready.com

Git Magic (e-book)– http://www-cs-students.stanford.edu/~blynn/gitmagic

Page 33: Controlo de Versões Distribuído com Git

ReferênciasGit for Beginners

– http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide

Why Git is Better than X– http://whygitisbetterthanx.com

Git Is Your Friend not a Foe– http://hades.name/blog/2010/01/17/git-your-friend-not-foe

A successful Git branching model– http://nvie.com/posts/a-successful-git-branching-model

Use Git For What It Is Not Intended (UGFWIINI)– http://thread.gmane.org/gmane.comp.version-control.git/110411