minicurso git pet computação

72
Bruno Orlandi Git e contribuição para projetos Open Source

Upload: bruno-orlandi

Post on 27-Jun-2015

260 views

Category:

Technology


3 download

DESCRIPTION

Ministrado em 18 de Outubro de 2014.

TRANSCRIPT

Page 1: Minicurso GIT PET Computação

Bruno Orlandi

Git e contribuição para projetos Open Source

Page 2: Minicurso GIT PET Computação

Bruno Orlandi● 4º Ano Ciências de Computação – ICMC USP

● PET Computação

● Gosta de compartilhar conhecimento

● @BrOrlandi

Page 3: Minicurso GIT PET Computação

Instalando

● Instalar o Git:

sudo apt­get install git● Instalar o Gitg:

sudo apt­get install gitg

http://git­scm.com

Page 4: Minicurso GIT PET Computação

Sobre o Minicurso

● Não será abordado a parte técnica do Git.

● Objetivo aprender Git e sua utilidade na prática!

● Dúvidas e correções a qualquer momento!

Page 5: Minicurso GIT PET Computação

Conteúdo

● Visão Geral● Comandos Básicos● Publicando e Colaborando● Trabalho em Equipe● Praticar● Praticar● Praticar

Page 6: Minicurso GIT PET Computação

O que é Git-SCM

● Sistema de Controle de Versão Distribuído● SCM   Software Configuration Management→● Criado por Linus Torvalds (2005)● Auxiliar no Desenvolvimento do Linux

Page 7: Minicurso GIT PET Computação

Gerência de Configuração de Software

Page 8: Minicurso GIT PET Computação

Gerência de Configuração de Software

● Durante o desenvolvimento do software queremos saber:

– O que mudou e quando?– Por que mudou?– Quem fez a mudança?– Podemos reproduzir esta mudança?

Page 9: Minicurso GIT PET Computação

Gerência de Configuração de Software

● Identificação● Documentação● Controle● Auditoria

Page 10: Minicurso GIT PET Computação

Gerência de Configuração de Software

● Artefatos:

– Código fonte– Documentação do Software– Manual de Usuário

Page 11: Minicurso GIT PET Computação

Problema exemplo

● Você precisa editar um site hospedado em um servidor

● Você faz o download via FTP● Faz as alterações necessárias● Manda os arquivos alterados para o servidor 

via FTP

Page 12: Minicurso GIT PET Computação

Problema exemplo

● Agora outro desenvolvedor também deve fazer alterações no site

● Baixa o mesmo arquivo junto com você● Edita e manda para o servidor depois de você● Sobrescreve suas alterações

Page 13: Minicurso GIT PET Computação

Controle de Versão resolve

● Controle de versão faz o 'merge' entre as alterações.

Page 14: Minicurso GIT PET Computação

Distribuído

Page 15: Minicurso GIT PET Computação

Controle de Versão

Page 16: Minicurso GIT PET Computação

Controle de Versão

Page 17: Minicurso GIT PET Computação

O que é Github

● Servidor de repositórios Git● Surgiu em 2008● +3 milhões de usuários

Page 18: Minicurso GIT PET Computação

Estão no Github

Page 19: Minicurso GIT PET Computação

Usam Git

Page 20: Minicurso GIT PET Computação

Alternativas

● Subversion (SVN)● Mercurial● CVS ­ Concurrent Versioning System● Bazaar

● Git é o mais rápido e eficiente

Page 21: Minicurso GIT PET Computação

Servidores

Servidores/Suporte git Mercurial SVN

Github V

Bitbucket V V

SourceForge V V V

Google Code V V V

Page 22: Minicurso GIT PET Computação

Antes de começar alguns termos técnios!

Page 23: Minicurso GIT PET Computação

Termos

● Repositório: onde são armazenados todos os arquivos do projeto.

● Commit: registro de alterações realizadas. Como se fosse um “checkpoint”.

● Branch: ramificação do projeto, uma linha de desenvolvimento diferente

Page 24: Minicurso GIT PET Computação

Termos

● Merge: incorporar alterações realizadas ou unir branchs.

● Fork: bifurcação, uma cópia do projeto. Ubuntu é um fork do Debian.

● Push: enviar as alterações para um repositório remoto.

● Pull e Fetch: baixar as alterações feitas de um repositório remoto. Pull realiza o merge.

Page 25: Minicurso GIT PET Computação

Vamos começar na prática!

Page 26: Minicurso GIT PET Computação

Help

● Quando precisar de ajuda:

git help <command>

Page 27: Minicurso GIT PET Computação

Configurando

● Configure seu nome e e­mail:

git config ­­global user.name “Meu Nome”

git config ­­global user.email [email protected]

● Configure cores no terminal:

git config ­­global color.ui true

Page 28: Minicurso GIT PET Computação

Criando o Primeiro Repositório

git init PrimeiroRepo

● Será criado o diretório com o novo repositório vazio.

cd PrimeiroRepo

● Todas as configurações do repositório ficam na pasta .git

Page 29: Minicurso GIT PET Computação

Crie seu primeiro arquivo

● Crie um arquivo, edite e adicione ao repositório:

touch PrimeiroArquivo

gedit PrimeiroArquivo

git add PrimeiroArquivo

git commit ­m “Criado o primeiro arquivo.”

Page 30: Minicurso GIT PET Computação

Estados dos arquivos

● Não monitorado (untracked)● Modificado (modified)● Preparado (staged)● Consolidado (commited)

Page 31: Minicurso GIT PET Computação

Estados dos arquivos

Page 32: Minicurso GIT PET Computação

Status dos arquivos

● Use o comando:

git status● Exibe alterações desde o último commit● Exibe os arquivos:

– Modificados– Preparados para o Commit– Novos que não estão no repositório

Page 33: Minicurso GIT PET Computação

Status dos arquivos

● Edite o arquivo criado anteriormente● Crie um novo arquivo e veja o seu status no 

repositório

Page 34: Minicurso GIT PET Computação

Explicando os comandos usados

git add <lista de arquivos>

● Adiciona os arquivos novos e modificados na Staging Area, preparados para o próximo Commit.

● git add ­­all 

● git add *.txt

● git add folder/*.txt

● git add folder/

● git add “*.txt”

Page 35: Minicurso GIT PET Computação

Explicando comandos usados

git commit [­m “Message”]

● Registra o commit de todos os arquivos que estão na Staging Area.

● Se o parametro de mensagem não for passado abrirá um editor de texto para escrever a mensagem

● git config ­­global core.editor gedit

Page 36: Minicurso GIT PET Computação

Git Workflow

● Basicamente a maior parte do trabalho com o git consiste nestas tarefas:

– Editar– Commitar

● Exercite estes comandos!

Page 37: Minicurso GIT PET Computação

Log e Show

git log

● Lista os commits mais recentes.

git log –pretty=oneline

git shortlog

git log ­­author=User

git show [commit]

● Mostra as alterações de um commit● Commit deve ser especificado pela chave

Page 38: Minicurso GIT PET Computação

Dif

git diff

● Exibir diferenças entre commits e branchs

git diff [path]

● Diferença em relação ao stage ou ultimo commit

git diff HEAD~1 HEAD

● Mostra o que foi alterado no último commit

Page 39: Minicurso GIT PET Computação

Ferramenta externa Dif

git config ­­global merge.tool

git config ­­global diff.external

● Permite usar uma ferramenta externa para usar no Diff e no Merge.

● No Eclipse:

Page 40: Minicurso GIT PET Computação

Git Blame

● Encontrar os culpados pelas alterações em um arquivo.

git blame <arquivo> ­L 10,15

● Vai exibir das linhas 10 a 15 quem escreveu elas.

Page 41: Minicurso GIT PET Computação

Git mv e rm

● Git não trata automaticamente arquivos renomeados ou movidos.

git mv <path1>  <path2>

git rm <file>

● Remove um arquivo do repositório.● A diferença é que essas alterações já são 

adicionadas ao staging.

Page 42: Minicurso GIT PET Computação

Desfazendo alterações

git checkout ­­ <path_or_file>

● Irá desfazer todas as alterações que não estejam no Stage desde o último commit.

git checkout HEAD ­­ <path_file>

● Desfazer as alterações desde o último commit incluindo o Stage.

Page 43: Minicurso GIT PET Computação

Git reset

git reset <file>

● Remove um novo arquivo da staging area.● Não serve para desfazer alterações, para isso 

use: checkout ­­ 

Page 44: Minicurso GIT PET Computação

Git checkout

git checkout <commit_id>

● Irá trocar HEAD para apontar para o commit.● Altera o repositório para o estado daquele 

commit.● Útil para fazer testes antes e depois de 

alterações.

git checkout master

● Para voltar o HEAD à posição normal.

Page 45: Minicurso GIT PET Computação

Git Revert

● Reverter um commit pode ser bastante útil.

git revert <commit_id>● Irá criar um novo commit que desfaz as 

alterações do commit especificado.

Page 46: Minicurso GIT PET Computação

Branching

Criando ramificações do repositório

Page 47: Minicurso GIT PET Computação

Branch

● É uma ramificação do repositório● Alterações(commits) ocorrem na branch● Muito útil para trabalhos colaborativos● Branchs de desenvolvimento facilitam o 

controle

git branch

Page 48: Minicurso GIT PET Computação

Branching

git branch new_branch

git checkout new_branch

● Cria e troca para uma nova branch

● É possível comparar branchs com diff:

git diff master new_branch

Page 49: Minicurso GIT PET Computação

Merge

● Uma tarefa muito comum com branchs é realizar o merge com outra branch.

git checkout master

git merge new_branch

● Excluir uma branch:

git branch ­d new_branch

Page 50: Minicurso GIT PET Computação

Conflitos

● Conflitos podem acontecer ao unirmos alterações

● Acontecem quando ramificações diferentes possuem as mesmas linhas nos mesmos arquivos editadas diferentes

Page 51: Minicurso GIT PET Computação

Merge com Conflito

● Ao tentar fazer o Merge se houver conflitos será acusado e anotado nos arquivos.

● O repositório fica em estado aguardando você consertar os conflitos manualmente.

● Após isso deve ser feito um commit indicando que o conflito foi resolvido.

Page 52: Minicurso GIT PET Computação

Git Rebase

● Quando a Branch pai sofre alterações e deseja­se aplicar estas alterações para Branchs filhas.

● Branchs filhas devem realizar o rebase:

git rebase master

● Pode acontecer conflitos!● Diferença do Merge é que adiciona os commits 

antes dos commits da branch.

Page 53: Minicurso GIT PET Computação

Git Rebase

● Quando a Branch pai sofre alterações e deseja­se aplicar estas alterações para Branchs filhas.

● Branchs filhas devem realizar o rebase:

git rebase master

● Pode acontecer conflitos!● Diferença do Merge é que adiciona os commits 

antes dos commits da branch.

Page 54: Minicurso GIT PET Computação

Tag

● Útil para definir versões estáveis do projeto.● Semelhante a Branch porém não sofre mais 

alterações.● Guarda o estado atual da branch.

git tag [nome da tag]

git push <remote> <tag>

Page 55: Minicurso GIT PET Computação

Interfaces Gráficas GUI

● Pelo terminal se faz tudo.● Interfaces gráficas ajudam na visualização e 

auxiliam em algumas tarefas.● Recomendadas:

– Egit – Plugin para Eclipse– Gitg – Para Linux– SourceTree – Para Windows

● Não Recomendado: Github for Windows

Page 56: Minicurso GIT PET Computação

Github e Remotes

Page 57: Minicurso GIT PET Computação

Remote

● Repositório remoto, hospedado em um servidor.

● São referenciados por uma URL.● Vamos trabalhar com repositório remoto no 

Github.● Outra opção interessante Bitbucket.

Page 58: Minicurso GIT PET Computação

Remote

● Podem receber vários commits.● Sincronizar o trabalho colaborativo.● Exige chave SSH.

git remote add origin <URL>

Page 59: Minicurso GIT PET Computação

Criar conta no Github

● Acessem https://github.com/● Criem uma conta utilizando utilizando o 

mesmo e­mail configurado no git config.● Github permite autenticação por chaves SSH. 

Use isto!

Page 60: Minicurso GIT PET Computação

Criar um repositório remoto

● Crie um repositório no Github.● Inicialize um repositório local.● Configure o repositório remoto.● Crie um arquivo README.md● Faça o upload das alterações.

Page 61: Minicurso GIT PET Computação

Push

● Enviar alterações (commits) de uma branch para o repositório remoto.

● A primeira vez:

git push ­u origin master

● O envio é rejeitado se o repositório local não estiver sincronizado.

git push <remote> <branch>

git push

Page 62: Minicurso GIT PET Computação

Pull

● Baixa as alterações do repositório remoto e realiza o Merge automático com o repositório local.

● Mantém o repositório sincronizado com os últimos commits de uma branch.

● Permite baixar novas branchs que não foram criadas localmente.

git pull 

git pull <remote> <nova>

Page 63: Minicurso GIT PET Computação

Git Clone

● Baixa o repositório remoto.● Outra forma de criar um repositório local.● Já vem com o remote configurado.

git clone <URL>

Page 64: Minicurso GIT PET Computação

Fork no Github

● Copia um repositório remoto de outro usuário para o seu usuário no Github.

● É assim que começa a contribuição para outros projetos.

● Você teria uma cópia independente do repositório original, podendo fazer quaisquer alterações.

Page 65: Minicurso GIT PET Computação

Issues no Github

● Tradução: Questões.● Reportar bugs.● Organizar tarefas a serem feitas.● Permite comentários dos usuários.● Pode referenciar commits.

Page 66: Minicurso GIT PET Computação

Pull Request

● O grande simbolo de colaboração.● É quando você solicita que sua alterações 

sejam unidas a uma branch no mesmo repositório ou a um repositório que sofreu o fork.

● Pull request podem ser comentados e referenciados no Github.

● Muito útil para o trabalho colaborativo.

Page 67: Minicurso GIT PET Computação

Vamos praticar mais!

Page 68: Minicurso GIT PET Computação

Caso de Exemplo

● Extensão para GNOME: Desktop Scroller.● Cria uma borda de rolagem entre os Desktops.● Permite configurar onde a borda é ativa.● Hoje mantido por outros usuários.

Page 69: Minicurso GIT PET Computação

Extras

● .gitignore● Git commit ­­ammend● Git Stash e Stash Pop● Milestones● Hooks● Github pages

Page 70: Minicurso GIT PET Computação

Dúvidas?

Page 71: Minicurso GIT PET Computação

Contato

● @BrOrlandi● [email protected]● www.slideshare.net/BrunoOrlandi

Page 72: Minicurso GIT PET Computação

Obrigado!http://goo.gl/XEsbPQ