Abcd

  • Uploaded by: IsaacMedeiros
  • 0
  • 0
  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Abcd as PDF for free.

More details

  • Words: 1,081
  • Pages: 28
Controle de Versão com GIT Túlio Toffolo – [email protected] http://www.toffolo.com.br

Conteúdo Extra Algoritmos e Estruturas de Dados

História do GIT •  Linus usa BitKeeper para gerenciar o código de suas versões do Linux •  Um belo dia ocorre um problema com a licença do BitKeeper •  Linus gostava das funcionalidades •  E não aceitava outras ferramentas como CVS e SVN

•  05/04/2005 – Surge a primeira versão do GIT •  15/06/2005 – Git é usado para no controle de versão do kernel do Linux

Quem está usando GIT? •  Android

•  X.Org

•  Gnome

•  Debian

•  Google

•  Perl

•  Kernel do Linux

•  GCC

•  Qt (toolkit)

•  Samba

•  Ruby on Rails

•  phpMyAdmin

•  PostgreSQL •  KDE

e muitos outros 3

Controle de versão centralizada

•  Nomes utilizados: •  VCS – Version Control System •  SCM – Source Code Management •  Commit •  Update

4

Controle de versão centralizada

5

Controle de versão centralizada •  Sistemas de controle de versão tradicionais •  Trabalham com um banco de dados central •  Clientes possuem apenas a versão mais atual

•  Exemplos •  CVS •  Subversion (SVN) •  Visual Source Safe

•  Desafios •  Conflitos no desenvolvimento com muitos usuários •  Comunicação servidor/cliente •  Backup?

Controle de versão distribuída

•  Não existe servidor real (apenas por convenção) •  Todo cliente possui o repositório •  O controle de versão funciona mesmo offline •  Fazer backups é trivial

•  Outros sistemas de controle de versão distribuídos •  Mercurial •  BitKeeper •  Darcs •  Bazaar

Controle de versão distribuída

8

Controle de versão distribuída

9

Vantagens do GIT •  Consistência •  Nenhum repositório deve possui mais data que qualquer outro

•  Velocidade •  Muito mais rápidos que sistemas de controle de versão convencionais (estou falando de CVS e Subversion)

•  Espaço •  Algoritmos de compressão eficientes que analisam “o todo” •  Reduz o tamanho local, assim como as transferências em operações de push/pull

•  Simplicidade •  Modelo de uso é muito simples

•  Open Source

Desvantagens do GIT •  Documentado quase exclusivamente através de páginas geradas via “man” •  Maior massa de dados em operações push/pull do que em commits/updates de versões centralizadas e… que eu saiba nenhuma outra !

Arquitetura do GIT •  Indíces •  Armazenam informação sobre a versão atual e as mudanças feitas nela

•  Banco de Dados de Objetos •  Blobs (arquivos) •  Armazenados na pasta .git/objects •  Indexados por um único hash •  Todos os arquivos são armazenados em blobs

•  Trees (diretórios) •  Commits •  Cada commit gera um novo objeto •  Informações do commit: hash do pai, nome do autor, data/hora do commit e o hash da estrutura corrente

Instalando o GIT •  Windows: •  msysgit: http://code.google.com/p/msysgit/ •  Git Extensions: interface gráfica de fácil uso

•  Ubuntu: •  sudo apt-get install git-core gitk

•  Mac (com MacPorts instado): •  sudo port install git-core gitk

13

Armazenamento do GIT •  A pasta .git •  Apenas no diretório raiz do projeto •  Contem todos os objetos, commits e configurações do projeto •  .git/config: arquivo com configurações específicas do repositório

•  .gitignore •  Arquivo texto que indica os arquivos que devem ser ignorados •  Exemplo: *.exe, *.dll, *.o, ~*

Alguns comandos

•  Pegar ou iniciar um repositório

•  Informações •  git help

•  git init

•  git status

•  git clone

•  git diff

•  Commits •  git add •  git commit

•  git log •  git show

Usando o GIT •  Iniciando seu repositório: •  git init

•  Configurando seus dados: •  git config --global user.name ”Túlio Toffolo” •  git config --global user.email ”[email protected]"

•  Adicionando arquivos à lista de commit •  git add arquivo.c •  git add . 16

Usando o GIT •  Fazendo o commit •  git commit –m “Mensagem de commit” •  git commit –a –m “Mensagem de commit”

•  Verificando as alterações: •  git status •  git log •  git reflog

•  Removendo arquivo do repositorio: •  git rm arquivo.c 17

Usando o GIT •  Desfazendo as alterações desde algum commit •  gitk checkout .

•  Movendo para uma versão antiga do repositório: •  git reset •  git reset --force (força a barra e volta sem fazer commit)

•  Revertendo para uma versão antiga do repositório: •  git revert

(nao remove nada, apenas aplica um patch) 18

Usando o GIT •  GIT nunca deleta um commit •  Assim, é difícil demais perder dados usando GIT Ø  Muito difícil dar um tiro no pé •  Criando TAGs •  git tag <nome_da_tag>

19

Usando branches •  O sistema de branches é a parte mais interessanto no uso do GIT •  Você sempre está trabalhando em algum BRANCH •  Um BRANCH pode ser local ou remoto •  Visualizando os branches •  git branch

•  Criando um branch: •  git branch <nome_do_branch> 20

Merge •  Como funciona o branching? o--o--o <-- origin \ a--b--c <-- mywork \ x--y--z <-- teste •  O que é um merge? o--o--o--a--b--c--x--y--z

Rebase •  Como funciona o branching? o--o--o--o--o <-- origin \ a--b--c <-- mywork •  O que é um rebase? o--o--o--o--o <-- origin \ a--b--c <-- mywork

Merge (exemplo 2) •  Como funciona o branching? o--o--o--o--o--o <-- origin \ a--b--c <-- mywork •  O que é um rebase? o--o--o--o--o--o <-- origin \

\ a--b--c--m <-- mywork

Otimizando a base GIT •  git gc •  Limpa o repositório e compacta a base •  Utilize de tempos em tempos em projetos grandes!!! •  Aumenta a performance consideravelmente

•  git fsck •  Confere a base de objetos •  Pode mostrar informações de erros

Usando o GIT remotamente •  Criar uma réplica de um repositório: •  git clone

•  Pegar modificações feitas em um repositório •  git fetch (pega as atualizações e coloca em outro branch) •  git pull (pega as atualizações e já faz merge)

•  Enviar modificações •  git push nome_remoto

25

Usando o GIT remotamente •  Protocolos •  Pasta no seu computador (!!!) •  SSH •  Rsync •  HTTP •  Protocolo próprio do Git

•  Criar apontamento remoto: •  git remote add /temp/repositorio_local/.git

26

Git para Backups •  Exemplo: Um diretório precisa de backup!!! •  Rsync é uma ferramenta adequada? •  Usa espaço em excesso

•  Solução: crie um repositório GIT no diretório •  Faça commits regulares •  Faça push para o local do backup

•  Mais que backup: backup versionado e usando menos espaço!

Outras ferramentas bacanas do GIT •  bash/zsh completion •  Gitk •  GUI para visualizar os commits

•  git instaweb •  Usado para gerar páginas web com o repositório

Related Documents

Abcd
July 2020 11
Abcd
October 2019 18
Abcd
May 2020 17
Abcd
June 2020 11
Abcd
May 2020 12
Abcd
November 2019 19

More Documents from ""

Abcd
October 2019 18
Github.docx
October 2019 7