Git

27
Git John Henrique Teixeira de Godoi Instituto de Ciˆ encias e Tecnologia Universidade Federal de S˜ ao Paulo ao Jos´ e dos Campos – SP, Brasil Outubro, 2011 Programa de Educa¸ ao em Software Livre - PESL

description

Introdução ao sistema de versionamento distríbuido git.

Transcript of Git

Page 1: Git

Git

John Henrique Teixeira de Godoi

Instituto de Ciencias e TecnologiaUniversidade Federal de Sao PauloSao Jose dos Campos – SP, Brasil

Outubro, 2011

Programa de Educacao em Software Livre - PESL

Page 2: Git

O que? Por que? Pra que?Rotina no git

Avisos!

Esses slides sao baseados principalmente no GitReference.

Algumas traducoes podem nao ser fieis mas se adequavammelhor ao contesto.

Alem do conteudo desses slides tem a parte pratica que seraexibida durante a apresentacao.

John Henrique Teixeira de Godoi Git

Page 3: Git

O que? Por que? Pra que?Rotina no git

Indice

1 O que? Por que? Pra que?VersionadoresDistribuıdosGit

2 Rotina no gitRepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

John Henrique Teixeira de Godoi Git

Page 4: Git

O que? Por que? Pra que?Rotina no git

Indice

1 O que? Por que? Pra que?VersionadoresDistribuıdosGit

2 Rotina no gitRepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

John Henrique Teixeira de Godoi Git

Page 5: Git

O que? Por que? Pra que?Rotina no git

VersionadoresDistribuıdosGit

Imagine voce no desenvolvimento de um sistema com milhares dearquivos, milhoes de linhas de codigos e centenas de

desenvolvedores.

Como organizar, compartilhar e sincronizar tudo o que forproduzido?

John Henrique Teixeira de Godoi Git

Page 6: Git

O que? Por que? Pra que?Rotina no git

VersionadoresDistribuıdosGit

Alguma vez voce ja quis que fazer Ctrl+Z em algum arquivodepois de ter desligado o computador?

Ja quis fazer alguma mudanca no seu codigo e ter a garantia demante-lo estavel?

John Henrique Teixeira de Godoi Git

Page 7: Git

O que? Por que? Pra que?Rotina no git

VersionadoresDistribuıdosGit

Versionadores - O que sao? Para que servem? Por queusa-los?

Versionadores sao sistemas que permitem o gerenciamento damanipulacao de arquivos, nao apenas codigos-fontes, de forma queseja possıvel trabalhar com diversas copias, versoes, do mesmo emmomentos diferentes com a possibilidade de unifica-las,recupera-las, compara-las, sincroniza-las, manter um historico doque for desenvolvido e, ainda, pessoas diferentes trabalharem sobreo mesmo arquivo em paralelo.

John Henrique Teixeira de Godoi Git

Page 8: Git

O que? Por que? Pra que?Rotina no git

VersionadoresDistribuıdosGit

Sistemas de Versionamento Distribuıdos

Diferentes de seus antecessores, que necessitavam de umaaplicacao servidor que centraliza-se o gerencimento dos arquivos,os versionadores distribuıdos dispensam essa necessidade comcopias independentes do mesmo codigo que podem comunicarentre si e se sincronizarem.Cada copia pode ser tratada com um backup de todo o sistema enao necessitam de conexao com a internet para que possamtrabalhar de forma eficiente.

John Henrique Teixeira de Godoi Git

Page 9: Git

O que? Por que? Pra que?Rotina no git

VersionadoresDistribuıdosGit

Git

Criado por Linus Torvalds em 2005.

Nome vem de uma brincadeira com a gıria “git” e o Kernelcriado por Linus levar seu nome.

Sistema de Versionamento Distribuıdo com foco em seudesempenho.

Desenvolvido voltado para o versionamento do kernel Linuxque antes era versionado com software proprietario.

John Henrique Teixeira de Godoi Git

Page 10: Git

O que? Por que? Pra que?Rotina no git

VersionadoresDistribuıdosGit

Git - interface

Os comandos do git sao passados como parametros apos achamada deste na linha de comando.

git <comando><opcoes><parametros>

Existem interface graficas, e plugins para IDE’s, que facilitamo uso das funcionalidades do git sem ter que usar o terminal.

NetBeans: http://nbgit.org/Eclipse: http://eclipse.org/egit/

gitk e git-gui sao interfaces graficas nativas.

Para windows o tortoisegit e uma das melhores opcoes.

http://code.google.com/p/tortoisegit/

John Henrique Teixeira de Godoi Git

Page 11: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Rotina no git

O uso dos comandos do git pode ser resumido em uma rotinadiaria que abragem as necessidades do cotidiano com umversionador.

John Henrique Teixeira de Godoi Git

Page 12: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Rotina no git - cheatsheet

Figure: http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html

John Henrique Teixeira de Godoi Git

Page 13: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Determinando territorio

init(-db) <opcoes>

Atraves desse comando e inicializado umrepositorio git.Uma opcao bastante usada a –bare que permitea criacao de um repositorio sem qualquerconfiguracao previa.

clone <EnderecoRepositorioRemoto>

Com este comando criasse uma copia de umrepositorio remoto para o diretorio atual.

John Henrique Teixeira de Godoi Git

Page 14: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Identifique-se

config - -global <opcoes>

Insere suas informacoes para identificar de formanatural sua modificacoes no projeto.

user.name ’Seu nome’user.email [email protected]

John Henrique Teixeira de Godoi Git

Page 15: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Selecionando

add <Lista de arquivos>

Com esse comando voce define quais arquivosdentro do diretorio serao versionados erastreados pelo repositorio.Com . todos os arquivos, diretorios esub-diretorios, existentes, serao adicionados.

rm <Lista de arquivos>

Remove do rastreamento do repositorio a listade arquivos.

mv <fonte><destino>

O git nao rastreia renomeacao de arquivos, eesse comando e equivalente a (git rm –cachedorig; mv orig new; git add new).

John Henrique Teixeira de Godoi Git

Page 16: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Como estamos?

status <opcoes>

Mostra o estado dos arquivos.

-s exibe um resumo do estado no diretorio(??) eno repositorio(A—M—D).

Adicionado, Modificado e Apagado(Deleted).

John Henrique Teixeira de Godoi Git

Page 17: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Registrando o momento

commit <opcoes>

Registra as modificacoes realizadas norepositorio.-a adiciona as mudancas realizadas (git add) aorepositorio.-m “descricao” permite colocar uma descricaogeral da mudancas realizadas naquele registro.Esses registros poderam ser comparados,revertidos e compartilhados posteriormente.

John Henrique Teixeira de Godoi Git

Page 18: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

De volta do tunel do tempo

diffMostra a diferenca, linha por linha, do que foiadicionado ou nao ao repositorio.- -cached apenas para o que foi adicionadoHEAD (registro especial que representa o estadoatual) diferenca entre HEAD e o ultimo registro.- -stats resumo das diferencas

reset <Registro>troca o conteudo HEAD pelo registro passadocomo parametro.“Ctrl+Z” do git- -hard Alem do conteudo do registro altera aarvore de registro e descarta todo o resto (usecom moderacao).

John Henrique Teixeira de Godoi Git

Page 19: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Ramificando

branch <opcoes><nome da ramificacao>

sem passar nenhum parametro, ele listara asramificacoes existentespassando um nome, ele criara uma ramificacao apartir da atual-d permite excluir a ramificacao (Use commoderacao!).

checkout <opcoes><nome da ramificacao>

Altera qual a ramificacao esta sendo trabalhada.Obs.: Ele ira exigir o registro de possıveismodificacoes antes de realizar a troca.-b cria uma nova ramificacao e depois alterapara essa

John Henrique Teixeira de Godoi Git

Page 20: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Unindo

merge <Lista de ramificacoes>

Unifica as ramificacoes passadas por parametrocom a atual e os registros mais recentes seraocombinados em um novo.

...::*CONFLITOS*::...

git merge - -abort

use mergetool e diff a vontade, resolva os conflitos e procedacom o merge novamente.

John Henrique Teixeira de Godoi Git

Page 21: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Nos “registros” anteriores do projeto...

log

exibe o historico de registro da ramificacaoatual. O que inclui indentificador, nome e e-maildo usuario, data e horario e descricao.- -oneline exibe apenas o identificador e adescricao.- -graph mostra um grafo com o comportamentodos registro (unificacoes e ramificacoes).

tag

permite criar um marco no historico de formaque se possa usa-lo para referenciar algum pontono historico.git log - -decorate exibe os marcos tambem

John Henrique Teixeira de Godoi Git

Page 22: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Voce nao esta sozinho!

remote

sem parametos mostra a lista de nomes dosrepositorios remotos.-v mostra, tambem, o endereco de cadarepositorio para envio e busca de atualizacoes.add <nome><endereco>adiciona um novorepositorio com o nome e endereco passados porparametro.rm <nome>remove o repositorio com o nomepassado por parametro

John Henrique Teixeira de Godoi Git

Page 23: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Comunicando-se

fetch <nome>

faz o download das novas ramificacoes e dadosdo repositorio remoto.

pull <nome>

alem do download tenta unificar com aramificacao atual.

push <nome><ramificacao>

envia suas novas ramificacoes e dados para umrepositorio remoto.

John Henrique Teixeira de Godoi Git

Page 24: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Pente fino

Para filtrar o historico gerado pelo “log” podemos usar algunsparametros:

- -author=<autor>- -oneline -<quantidade>filtra o historicopelo “autor” mostrando os registros, limitado a uma certa“quantidade”, feitos por este.

- -since, - -before, - -until, - -after={ data} filtra por umaespecifica “data”, desde, antes, ate e depois desta,respectivamente.

data pode ser escrita nas formas: 3.weeks.agoou 2011-10-4, por exemplo

- -grep=<padrao>busca os registros que possuam o “padrao”em suas informacoes

- -S<mudanca>procura no historico onde foi inserida a“mudanca” passada que pode ser uma funcao, por exemplo.

John Henrique Teixeira de Godoi Git

Page 25: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Pente fino

merge-base <ramificacao1><ramificacao2>

encontro o registro em comum entre asramificacoes passadas por parametro

diff - -stat <ramificacao1><ramificacao2>

encontra o registro em comum e mostra quaisforam as mudancas.

blame <arquivo>

exibe o responsavel por cada linha de codigo.

John Henrique Teixeira de Godoi Git

Page 26: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Colher de cha

DiffMerge, Kdiff3 ou Meld – ferramentas graficas para solucaode conflitos

sudo apt-get install meld ; git config - -global merge.tool meld

John Henrique Teixeira de Godoi Git

Page 27: Git

O que? Por que? Pra que?Rotina no git

RepositorioDesenvolvimentoDividir para Conquistar e Somar resultadosCompartilhando e Atualizando projetosExaminando e comparando

Referencias

gitref.org/

git-scm.org

zrusin.blogspot.com/2007/09/git-cheat-sheet.html

andyjeffries.co.uk/articles/25-tips-for-intermediate-git-users

pajeonline.blogspot.com/2010/12/versionando-seus-dados-boas-praticas-e.html

John Henrique Teixeira de Godoi Git