- Git é um sistema de controle de versão distribuído multiplataforma que permite rastrear alterações em arquivos e coordenar trabalho em equipe.
- Ele funciona com um modelo de três árvores que mantém cópias de trabalho locais, índices e heads.
- Git suporta branches para desenvolvimento isolado e tags para marcar releases. Comandos como add, commit, push e pull controlam o fluxo de trabalho.
2. Controle de Versão
O controle de versão é um sistema que
registra as alterações realizadas em um
arquivo ou conjunto de arquivos ao longo
do tempo.
3. Sistemas de Controle de Versão local
● Copiar os arquivos para outro diretório local.
● É fácil esquecer que você está no diretório e,
acidentalmente, sobreescreve para o arquivo errado
ou copiar arquivos quando você não quis. Para lidar
com este problema, há muito tempo os programadores
desenvolveram VCSs (Version Control System's) locais que
tiveram um simples banco de dados que guarda todas
as alterações em arquivos sob controle de revisão.
5. Sistemas de Controle de Versão centralizados
Um único servidor que contém todos os arquivos versionados.
Pode oferecer algumas vantagens:
● Todo mundo sabe até certo ponto o que todos fazem no projeto.
● Os administradores têm um controle maior sobre quem pode fazer o que no
projeto.
No entanto, esta configuração também tem algumas desvantagens:
● Se este servidor cair por uma hora, ninguém pode colaborar ou salvar as
alterações versionadas durante esse período.
● Se o servidor corromper seu HD e não houverem backups, absolutamente
tudo será perdido inclusive todo o histórico do projeto exceto nas máquinas
locais.
7. Sistemas de controle de versão distribuído
● Os clientes são idênticos no repositório.
● Assim, se qualquer servidor morrer, qualquer um dos
repositórios de clientes podem ser copiados de volta para o
servidor para restaurá-lo.
● Cada check-out é um backup completo de todos os dados.
● Além disso, é possível trabalhar com vários repositórios
remotos, de modo que você pode colaborar com diferentes
grupos de pessoas de maneiras diferentes ao mesmo tempo
dentro do mesmo projeto.
● Isto permite-lhe configurar vários tipos de fluxos de trabalho
que não são possíveis em sistemas centralizados, como
modelos hierárquicos.
9. ● Sistema de controle de versão ditribuído.
○ Consulta toda a história do projeto desde o primeiro commit
○ Obter versões mais antigas do projeto
● Open Source
● Multiplataforma
● Rápido e eficiente
● Comessou a ser desenvolvido em 2005 por Linux Torvalds para controle de versão do Kernel do linux.
○ O sistema de versionamento inicial que antes era gratuíto passou a ser cobrado, daí surgiu a
necessidade de se desenvolver um sistema de versionamento.
● Pela linha de comando a produtividade pode ser maior, mas há opções de ferramentas gráficas:
○ RabbitVCS Git
○ Meld
○ Em IDE's como o netbeans
Git
http://git-scm.com/
Linux
○ Git (MSysGit)
○ TortoiseGit
○ ??????
Windows
Mac
10. Fluxo de trabalho
Seus repositórios locais consitem em três "árvores" mantidas pelo git. a primeira
delas é sua Working Directory que contém os arquivos vigentes. A segunda Index
que funciona como uma área temporária e finalmente a Head que apontam para a
última confirmação que você fez.
11. Branches (Ramos)
Branches são utilizados para desenvolver funcionalidades isoladas umas das
outras. O ramo master é o ramo padrão quando se criar um novo repositório.
Pode-se usar outros ramos para desenvolver e mesclá-los ao master após a
conclusão.
12. Branches (Ramos)
Há a possibilidade de se desenvolver branches locais e trabalhar neles de acordo
com as suas necessidades.
Criando um novo branch:
retornando para o branch master:
removendo um branch:
Um branch não está disponível a outros a menos que o envie para o repositório
remoto:
$ git checkout -b nome-do-branch
$ git checkout master
$ git branch -d nome-do-branch
$ git push origin <branch>
13. Sobrescrever alterações locais
Tags (Rótulos)
É recomendado criar rótulos para releases de software, pelo git é possível através
do comando: $ git tag 1.0.0
Com o comando: $ git checkout --<nome arquivo> é possivel sobrescrever as
alterações locais. Dessa forma, será substituído as alterações na árvore de trabalho
com o conteúdo mais recente no Head. Alterações adicionadas no index, bem como
novos arquivos serão mantidos.
Remover todas as alterações locais e recuperar o histórico mais recente do servidor
é possível atráves dos comandos:
$ git fetch origin
$ git reset --hard origin/master
14. Comandos Básicos
1. init
○ Cria um novo repositório do git
2. clone
○ Cria uma cópia de trabalho em um repositório local
○ Se você não clonou um repositório existente e deseja conectá-lo a um servidor remoto o
comando será git remote add origin <servidor>. Agora você será capaz de enviar suas
alterações para o servidor remoto.
3. add
○ Adiciona o que fará parte do próximo commit
4. commit [-m "Mensagem obrigatório"]
○ Envia os arquivos adicionados para o Head, mas ainda não para o repositório remoto
5. push
○ Suas alterações agora estão no Head da sua cópia de trabalho local, após realizado o commit. O
comando push serve para enviá-las para o repositório remoto, o comando completo é $ git push
origin master. "master" pode ser substituída para qualquer ramificação desejada.
6. pull
○ Atualizar o repositório local.
7. merge <branch>
○ Mesclar alterações remotas, um outro ramo ao seu ramo ativo. O git tenta auto-mesclar as
alterações. Infelizmente, isso nem sempre é possível e resulta em conflitos. Os Conflitos devem
ser editados manualmente, depois de alterados é necessário marcá-los como mesclados $ git
add <arquivo>. Há a possibilidade de pré-visualizar os arquivos usando $ git diff <ramo
origem> <ramo destino>
15. Git Hub / Bitbucket
https://www.github.com/ | https://www.bitbucket.org
● Git Hub != Git
○ Git hub é um serviço público ou privado, gratuíto ou pago, que permite armazenar repositórios via
internet e utiliza o git como sistema de versionamento.
● Bitbucket
○ Serviço gratuíto que permite armazenar repositórios privados via internet.
16. O que é?
É um sistema de controle de versão distribuído.
Quando aplicar?
Em projetos, de grande ou pequeno porte, open source ou não, em que os arquivos
necessitam de controle de versão.
Como utilizar?
Basicamente conforme demonstrado na apresentação.
Recapitulando...
17. Bibliografia
1. Pro Git : Everything you need to know about the git distributed source control toll - Scott Chacon -
Appress
2. Version Control With Git - Jon Loelinger - O'Reilly
3. Controlo de Versões Distribuído com Git - http://www.slideshare.net/NetPonto/controlo-de-versao-
distribuido-com-git - Caio Proiete
4. git guia prático - http://rogerdudler.github.com/git-guide/index.pt_BR.html - Roger Dudler