3. Git
“O sistema de controle de versão mais
inteligente do que você.” – Linus Torvalds
4. Há muito tempo atrás, numa galáxia
muito distante...
☑GIT foi criado em 2005 por Linus Torvalds para ser
o novo sistema de controle de versão do Kernel
Linux.
☑Pilares do projeto:
☑Ser rápido
☑Distribuído
☑“Ser o mais diferente possível do CVS, o que por si só
já é excelente.” – Linus Torvalds
5. GIT
☑ Open-Source
☑ Todo o código-fonte do GIT é open-source, ou seja, até a Microsoft pode
usar.
☑ Distribuído
☑ Não existe um repositório central obrigatório. Todo repositório GIT é um
repositório completo e funcional.
☑ Orientado a Branches
☑ O GIT incentiva o uso extensivo de branches para auxiliar no processo de
construção do projeto. Branches são leves e fáceis de serem “mergidas”
entre si.
☑ Garantia dos dados
☑ GIT usa SHA-1 para assinar o conteúdo dos arquivos de cada commit. Com
isso, há a possibilidade da integridade dos dados ser conferida pelos
membros da equipe.
6. Warm-Up
☑ Remote
☑ Um caminho para um repositório hospedado em outro computador.
☑ Commit
☑ Um Commit é uma modificação feita no conteúdo do projeto que é salva no
histórico.
☑ Branch
☑ Uma ramificação na linha de desenvolvimento do projeto.
☑ Cloning
☑ Copiar um repositório local ou remoto, juntamente com todo seu histórico.
☑ Tags
☑ Nome dado a alguma modificação ou release do projeto.
☑ Merging
☑ Ato de combinar dois branches em um só.
☑ Checkout
☑ Mudar de branch.
8. GIT
☑ Na branch Master, temos a versão estável do código.
☑ Na branch Develop, temos a versão do código que é usada para
desenvolvimento.
☑ Para cada modificação necessária ao código, criamos uma branch
Topic a partir de Develop e fazemos nela o trabalho necessário.
Após o trabalho ter sido concluído, fazemos um merge de Topic
com Develop.
☑ Após todas as modificações terem sido feitas e o código novo
estiver estável, fazemos um merge entre Develop e Master.
9. GIT
Branches são leves, não tenha medo de usá-las!Elas
auxiliam no controle e gerenciamento do projeto
e deixam o histórico mais organizado.
10. Comandos Principais
☑ Git init
☑ Git branch <nome da branch>
☑ Git checkout <nome da branch>
☑ Git clone <caminho do repositório>
☑ Git commit –m <mensagem do commit>
☑ Git remote
☑ Add <nome do remote> <caminho do repositorio remoto>
☑ Rm <nome do remote> <caminho do repositorio remoto>
☑ Git push <repositório remoto> <branch remoto>
☑ Git pull
☑ Git add <arquivos>
11. Outros Comandos
☑Git diff <nome do arquivo> <nome do arquivo>
☑Git config <options>
☑Git rebase <nome da branch> <nome da branch>
☑Git tag <nome da tag>
☑Git fetch
☑Git status
12. Agenda
☑Git on the server
☑Pra que tantos protocolos?
☑História
☑Pontos fortes
☑Projetos
☑Trabalhando com o
Gitorious
☑Tópicos especiais
13. Git on the Server
☑E se um colaborador estiver offline?
☑Possuir um repositório em comum para os
colaboradores é útil.
Servidor Git
Que também merece alguns protocolos de
comunicação.
14. Pra que tantos protocolos?
☑Protocolo local
☑SSH
☑Protocolo Git
☑Protocolo HTTP/S
What!?
15. Protocolo local
☑ Caso comum onde todos tem acesso a um repositório remoto via
algum diretório compartilhado(exemplo: NFS)
☑ $ git clone /opt/git/project.git
☑ $ git clone file:///opt/git/project.git
☑ Prós:
☑ Simplesmente simples ter e acessar diretório compartilhado!
☑ Contras:
☑ Confusões nas permissões de arquivos e montagem de disco remoto pé no
saco.
16. Secure Shell(SSH)
☑ Facilmente usado em servidores para leitura e escrita com
autenticação.
☑ $ git clone ssh://user@server:project.git
☑ $ git clone user@server:project.git
☑ Prós:
☑ Escrita autenticada, transferência de dados criptografados e autenticados, e
eficiente(dados compactados antes da transferência.
☑ Contras:
☑ Sem acesso anônimo, ruim para projetos open-Source.
17. Protocolo GIT
☑Fornece um serviço similar ao SSH, porém sem
autenticação.
☑A única segurança é o arquivo git-export-daemon-ok.
☑Git://host.com.br/projeto/repositorio.git
☑Prós:
☑O mais rápido entre os 4 protocolos.
☑Contras:
☑Qualquer um acessa.
18. HTTP/S
☑Um dos mais difundidos e é fácil de ser usado,
tanto para leitura(HTTP/HTTPS) quanto para
escrita(HTTPS).
☑git clone http://example.com/gitproject.git
☑Prós:
☑Protocolo muito usado e dificilmente barrado por
firewalls.
☑Contras:
☑Lento, sobrecarga de rede.
19. Gitorious servidor git web
☑Gitorious é uma estrutura web open source para
o gerenciamento de repositorios com foco no
gerenciamento de projetos.
O Git já não vem com algo assim?
20. Git web
☑O git possui por default um script chamado
GitWeb.
21. História do Gitorious
☑O desenvolvimento iniciado em 2007 por Johan
Sorensen com o objetivo de facilmente
armazenar seus próprios repositórios.
Com o tempo…
23. Pontos Fortes
☑Gestão de projetos por equipes.
☑Monitoramento de atividades.
☑Acompanhamento de projetos.
☑Linha de tempo.
☑Wikis dos projetos.
24. Projetos no gitorious
☑ Vários repositórios por projeto.
☑ Merge requests.
☑ Alocação de equipes:
☑ Pode se alocar equipes inteiras com um mesmo privilégio de
acesso.
25. E os protocolos como ficam?
☑O Gitorious cuida do gerenciamento destes pra
você.
☑Preocupe-se mais com outras características do
projeto.
27. Git merging
git merge <branch>
☑Resolvendo os conflitos.
☑ o novo commit é interrompido caso haja conflitos.
☑ git status (quando ver os unmerged edite os)
☑ git otimiza o melhor branch ancestral para realizar o
merge.
28. Git merging
☑git mergetool pode ser muito util para editar os
conflitos usando uma ferramenta de diff instalada
no seu pc.
29. Curiosidades
☑Você pode querer revisar certos commits porém
digitar aquele SHA-1 é meio chato...
☑ Git aceita abreviação, em vez de …
734713bc047d87bf7eac9674765ae793478c50d3
☑ Digite apenas:
734713…
☑Git show 734713
☑Pra mostrar versões pais de um commit:
☑ git HEAD^3(e ^ sozinho é o pai)