GIT + GITHUBSistema de Controle de Versão Distribuído + Code SharingMauricio Wolff
Controle de Versão• SCMS permitem vários desenvolvedores simultâneos,
preservam milestones do código e automatizam o backup.
• Podem ser:
Distribuído
BazaarMercurialGIT (05)
BitKeeper (98)
Centralizado
TFSSVNCVS
SCCS (72)
Terminologia• Repository
• Local onde ficam os arquivos e alterações feitas
• Revision• Ou version, o estado de toda a
tree do repositório num tempo específico
• Diff, Delta• Somente as alterações feitas
• Checkout• Criar uma cópia local do
repositório• Commit
• Envio de dados para o repositório
• Conflict• Diferentes usuários alterando as
mesmas linhas nos arquivos• Working Copy
• Cópia local (checked out)• Tag
• Snapshot do repositório, para facilidade de manutenção
• Trunk• Linha principal do projeto, que não
é um branch• Branch
• Linha alternativa de desenvolvimento, pode ser uma feature ou um branch experimental
Trunk, Tags, Branches
Tag v3
Feature 1 Branch
Test Branch
Tag v2
Tag v1
Trunk
Modelo Centralizado
• Dependência de Rede• File Lock• Backup no Server• Difícil de usar merge e
branches• Branches e Tags são na
verdade cópias do repositório
Modelo Distribuído
• Não precisa de Rede• Cada clone é o repositório
completo• Múltiplos Backups• Merges locais/remotos• Branches e Tags são somente
uma referência, não cópias• Não existe um trunk, a não ser
por convenção
1 1
1
22
3
3
História do GIT• Criado por Linus Torvalds em 2005• Alternativa ao BitKeeper, usado para manter o Linux
Kernel• Simplicidade e rapidez!
Instalando GIT no Windows• Download: http://code.google.com/p/msysgit/• Instalar, com a opção de usar o Command Prompt
Instalando GIT no Windows• Gerar a chave ssh para o github.com• Configurar o ~/.gitconfig
[color] ui = true
[color "diff"] whitespace = red reverse
[diff] renames = true
[alias] s = status d = diff ci = commit -v cia = commit -v -a co = checkout cp = cherry-pick p = push l = log ll = log -p lt = log trunk.. llt = log -p trunk.. lm = log master.. llm = log -p master.. b = branch who = shortlog -s –
[user] name = "Mauricio Wolff" email = [email protected]
[push] default = matching
Inscrição no GitHub• Projetos Open Source = free• Copiar a chave SSH e mais config
$ git config --global core.autocrlf input
Criando o primeiro Projeto
Criando o primeiro Projeto
Criando o primeiro Projeto
Alterando localmente, atualizando
Branching
Remote Branching
Merging
Remote Merging
Remote Merging
Branch Diff$ git diff bonsai
GIT Cheat Sheet• Criar
• git init• git add [. ou -A]• git clone [~/, git://, ssh://, http://]
• Mostrar• git status• git diff [$id1, $id2 ou $branch]• git log [-1]• git blame $file• git show $id• git show $id:$file• git branch (mostra todos)
• Adicionar ao Stage• git add [-A, -u, -i]
• Consertar• git reset --soft HEAD^ (ctrl + z)• git commit –a –-amend (refaz)
• Branches• git checkout $branch• git merge $branch• git branch $nome• git branch –d $nome
• Update• git fecth• git pull [remote]• git am -3 patch.file
• Publish• git commit –a• git format-patch origin• git push [remote, branch]• git tag v1.0
• Úteis• git fsck• git gc --prune
Referências• http://git-scm.com/• http://github.com/• http://help.github.com/• http://github.com/guides/git-cheat-sheet• Linus Torvalds on GIT: http://j.mp/3M94sb • Git - SVN Crash Course: http://git.or.cz/course/svn.html• A Git/TFS bridge: http://github.com/spraints/git-tfs
Q&AOlha o tempo antes...