Transcript
Page 1: Git e contibuição com projetos open source usando GitHub

Bruno Orlandi

Git e contribuição para projetos Open Source

2ª Edição

Page 2: Git e contibuição com projetos open source usando GitHub

Bruno Orlandi● 5º Ano BCC – ICMC USP

● P&D – Ícaro Technologies

● Desenvolvimento Web

● Gosta de compartilhar conhecimento

● @BrOrlandi

Page 3: Git e contibuição com projetos open source usando GitHub

Instalando

● Instalar o Git:

sudo apt­get install git

● Escolha sua interface gráfica:

– https://git­scm.com/downloads/guis 

● Recomendado: GitEye

– http://www.collab.net/downloads/giteye 

Page 4: Git e contibuição com projetos open source usando GitHub

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: Git e contibuição com projetos open source usando GitHub

Conteúdo

● Controle de Versão● Comandos Básicos● Ramificações● Publicando e Colaborando● Exercícios

Page 6: Git e contibuição com projetos open source usando GitHub
Page 7: Git e contibuição com projetos open source usando GitHub

O que é Git-SCM

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

Page 8: Git e contibuição com projetos open source usando GitHub

Gerência de Configuração de Software

Page 9: Git e contibuição com projetos open source usando GitHub

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 10: Git e contibuição com projetos open source usando GitHub

Gerência de Configuração de Software

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

Page 11: Git e contibuição com projetos open source usando GitHub

Gerência de Configuração de Software

● Artefatos:

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

Page 12: Git e contibuição com projetos open source usando GitHub

Problema exemplo

● Você precisa editar um código que está no seu Dropbox

● Você faz o download do arquivo● Faz as alterações necessárias● Salva o arquivo no Dropbox

Page 13: Git e contibuição com projetos open source usando GitHub

Problema exemplo

● Seu colega também quer editar o código● Vocês baixam o mesmo arquivo junto● Você edita e salva no Dropbox● Seu colega edita e salva no Dropbox e acaba 

sobrescrevendo seu código

Page 14: Git e contibuição com projetos open source usando GitHub

Controle de Versão resolve

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

Page 15: Git e contibuição com projetos open source usando GitHub

Git é Distribuído

Page 16: Git e contibuição com projetos open source usando GitHub

Controle de Versão

Page 17: Git e contibuição com projetos open source usando GitHub

O que é GitHub

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

Page 18: Git e contibuição com projetos open source usando GitHub

Estão no GitHub

Page 19: Git e contibuição com projetos open source usando GitHub

Usam Git

Page 20: Git e contibuição com projetos open source usando GitHub

Alternativas

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

● Git é o mais rápido e eficiente

Page 21: Git e contibuição com projetos open source usando GitHub

Servidores

Servidores/Suporte git Mercurial SVN

GitHub V

GitLab V

Bitbucket V V

SourceForge V V V

Google Code V V V

Page 22: Git e contibuição com projetos open source usando GitHub

Vamos começar na prática!

Page 23: Git e contibuição com projetos open source usando GitHub

Instalando

● Instalar o Git:

sudo apt­get install git

● Escolha sua interface gráfica:

– https://git­scm.com/downloads/guis 

● Recomendado: GitEye

– http://www.collab.net/downloads/giteye 

Page 24: Git e contibuição com projetos open source usando GitHub

Criar conta no Github

● Acessem https://github.com/● Criem sua conta.● Lembre­se, através dessa conta você poderá 

contribuir com milhões de projetos open source.

Page 25: Git e contibuição com projetos open source usando GitHub

Ajuda

● Quando precisar de ajuda:

git help <command>

● Site oficial:

– https://git­scm.com/ 

Page 26: Git e contibuição com projetos open source usando GitHub

Criando o Primeiro Repositório

git init PrimeiroRepo

● Será criado o diretório configurado como um repositório Git

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

Page 27: Git e contibuição com projetos open source usando GitHub

Crie seu primeiro arquivo

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

gedit PrimeiroArquivo

git add PrimeiroArquivo

git commit ­m “Criado o primeiro arquivo.”

Page 28: Git e contibuição com projetos open source usando GitHub

Configurando

● Configure seu nome e e­mail:

git config ­­global user.name “MeuUserName”

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

● Configure cores no terminal:

git config ­­global color.ui auto

Page 29: Git e contibuição com projetos open source usando GitHub

Git Status e Log

● Comando para ver o status do repositório

git status

● Ver últimos commits no repositório:

git log

Page 30: Git e contibuição com projetos open source usando GitHub

Criar um repositório remoto

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

git remote add <remote> <url>

Page 31: Git e contibuição com projetos open source usando GitHub

Git 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 32: Git e contibuição com projetos open source usando GitHub

Git Add

git add <lista de arquivos>

● Adiciona os arquivos novos e modificados para o próximo commit

git add .

Page 33: Git e contibuição com projetos open source usando GitHub

Git Commit

git commit [­m “Message”]

● Registra o commit com todos os arquivos que usou “git add”

● 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 34: Git e contibuição com projetos open source usando GitHub

Git Workflow

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

– Editar– Commitar– Sincronizar com o repositório remoto

● Exercite estes comandos!

Page 35: Git e contibuição com projetos open source usando GitHub

Revisão dos comandos

● git status

● git log

● git add

● git commit

● git push

Page 36: Git e contibuição com projetos open source usando GitHub

Status dos arquivos

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

repositório

Page 37: Git e contibuição com projetos open source usando GitHub

Estados dos arquivos

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

Page 38: Git e contibuição com projetos open source usando GitHub

Estados dos arquivos

Page 39: Git e contibuição com projetos open source usando GitHub

Dif

git diff

● Exibir diferenças entre commits e branchs

git diff [path]

● Diferença no diretório

git diff HEAD~1

● Mostra o que foi alterado no último commit● Ver diff no GitHub

Page 40: Git e contibuição com projetos open source usando GitHub

Ferramenta externa Dif

git config ­­global diff.tool diffmerge

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

git difftool HEAD~1

Page 41: Git e contibuição com projetos open source usando GitHub

Exercício 1

● Remova uma linha de um arquivo● Adicione uma nova linha no mesmo arquivo● Adicione um novo arquivo com pelo menos 

uma linha● Faça o commit e o push das alterações● Veja as diferenças do commit pelo GitHub

Page 42: Git e contibuição com projetos open source usando GitHub

Git Clone

git clone <URL>

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

Page 43: Git e contibuição com projetos open source usando GitHub

Git Pull

git pull 

● Baixa as alterações do repositório remoto.● Mantém o repositório sincronizado com os 

últimos commits de uma branch.

Page 44: Git e contibuição com projetos open source usando GitHub

Exercício 2

● Configure um colaborador para seu repositório.

● Ele deve clonar seu repositório e fazer um commit nele.

● Você deve atualizar seu repositório com o novo commit.

● Invertam os papéis.

Page 45: Git e contibuição com projetos open source usando GitHub

Navegar no histórico

git checkout <commit> <file>

● Permite ver como um arquivo ou todo o repositório estava em um determinado commit.

Page 46: Git e contibuição com projetos open source usando GitHub

Git checkout

git checkout <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 repositório no último commit.

Page 47: Git e contibuição com projetos open source usando GitHub

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 48: Git e contibuição com projetos open source usando GitHub

Git Revert

git revert <commit>

● Irá criar um novo commit que desfaz as alterações do commit especificado.

● Útil para desfazer um commit antigo.

Page 49: Git e contibuição com projetos open source usando GitHub

Git reset

git reset <commit>

● Resetar o repositório para um determinado commit.

git reset ­­hard <commit>

● Resetar e remover todas as alterações.

– Cuidado ao usar! Não usar se já estiver publicado.

● Útil para desfazer últimos commits.

Page 50: Git e contibuição com projetos open source usando GitHub

Conflitos

● Conflitos podem acontecer ao unirmos alterações.

● Acontecem quando versões diferentes possuem as mesmas linhas nos mesmos arquivos editadas diferentes.

● O Git identifica os conflitos e fica aguardando a solução deles.

● Ao resolver os conflitos deve ser feito um commit.

Page 51: Git e contibuição com projetos open source usando GitHub

ConflitosLinha 1Linha 2Linha 3

Linha 1Linha 2Linha 3Nova linha

Linha 1Linha 2Linha 3Quarta linha

?

Page 52: Git e contibuição com projetos open source usando GitHub

Exercício 3

● Crie um conflito no repositório do seu par.● Seu par deve editar o mesmo arquivo que 

você.● Você deve fazer o pull, resolver o conflito e 

fazer o push das suas alterações.● Seu par deve ver que a sua alteração foi 

adicionada junto à alteração dele.● Invertam os papéis.

Page 53: Git e contibuição com projetos open source usando GitHub

Branching

Criando ramificações do repositório

Page 54: Git e contibuição com projetos open source usando GitHub

Branch

● É uma lista de commits.● Representa ramificações no repositório.● Muito útil para trabalhos colaborativos.● Branchs de desenvolvimento facilitam o 

controle.● Branch master é a padrão.

git branch

Page 55: Git e contibuição com projetos open source usando GitHub

Branching

git branch <nova_branch>

● Cria uma nova branch.

git branch ­d <branch>

● Excluir uma branch.

Page 56: Git e contibuição com projetos open source usando GitHub

Git Checkout Branch

git checkout <branch>

● Muda para a branch.● Seu repositório passa a ter os commits que a 

branch possui e novos commits serão adicionados à ela.

Page 57: Git e contibuição com projetos open source usando GitHub

Exercício 4

● Crie uma nova branch no seu repositório.● Mude para esta branch e faça pelo menos 2 

commits.● Faça o upload e veja sua nova branch no 

GitHub.● Faça um commit na master que altere as 

mesmas linhas.● Veja como as branchs divergem no GitHub.

Page 58: Git e contibuição com projetos open source usando GitHub

Git Merge

git merge <branch>

● Aplicar os commits de uma branch na branch atual.

● Encontra um commit comum(base) entre as branchs e aplica todos os commits que a branch atual não possui.

● Caso existam commits na branch atual que não estão na outra, será criado um commit de merge.

Page 59: Git e contibuição com projetos open source usando GitHub

Exercício 5

● Fazer o merge da nova branch na master.● Resolver o conflito e visualizar no GitHub o 

gráfico das branchs.

Page 60: Git e contibuição com projetos open source usando GitHub

Git Rebase

git rebase <branch>

● Semelhante ao Merge porém é diferente na ordem de aplicar os commits.

● No Rebase, os seus commits na frente da base são removidos temporariamente, os commits de outra branch são aplicados na sua branch e por fim seus commits são aplicados um a um.

● Pode acontecer conflitos que serão resolvidos para cada commit.

Page 61: Git e contibuição com projetos open source usando GitHub

Exercício 6

● Faça um commit na master e outro em outra branch.

● Faça o rebase da branch com a master.● Veja a ordem dos commits.● Mesmo que tenha conflitos o histórico de 

commits é preservado.

Page 62: Git e contibuição com projetos open source usando GitHub

Git Fetch

git fetch

● Baixa as atualizações do remote porém não aplica elas no repositório.

● Permite fazer o rebase de uma branch em vez de fazer o merge.

● Pull = Fetch + Merge● Fetch e Rebase é melhor para manter histórico 

do desenvolvimento.

Page 63: Git e contibuição com projetos open source usando GitHub

Exercício 7

● Com a branch master sincronizadas você e seu par devem fazer commits na master.

● Seu par deve fazer o push dos commits dele.● Antes de você fazer o push dos seus commits 

você deve fazer o rebase com os commits do seu par.

Page 64: Git e contibuição com projetos open source usando GitHub

Tag

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

commits.● Guarda um estado do repositório.

git tag [nome da tag]

git push <remote> <tag>

Page 65: Git e contibuição com projetos open source usando GitHub

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– GitEye – Linux, Windows e Mac– SourceTree – Para Windows

● Não Recomendado: GitHub for Windows

Page 66: Git e contibuição com projetos open source usando GitHub

GitHub e colaboração com Open Source

Page 67: Git e contibuição com projetos open source usando GitHub

Fork no GitHub

● Copia um repositório 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 68: Git e contibuição com projetos open source usando GitHub

Issues no GitHub

● Tradução: Questões.● Reportar bugs.● Organizar tarefas a serem feitas.● Permite discussão entre os usuários.● Pode ser referenciado por commits.

– Commit: “Closes #3”

Page 69: Git e contibuição com projetos open source usando GitHub

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.

● Igual uma Issue porém com uma branch associada.

● Muito útil para o trabalho colaborativo.

Page 70: Git e contibuição com projetos open source usando GitHub

Fluxo do GitHub

● https://guides.github.com/introduction/flow/ 

Page 71: Git e contibuição com projetos open source usando GitHub

Exercício Final

● Faça um fork deste repositório:

https://github.com/BrOrlandi/GitTrainingWall ● Rode o projeto.● Sua tarefa é criar um template com informações 

do seu usuário no GitHub.● Faça o trabalho em um branch separada e depois 

crie um Pull Request para o repositório original.

Page 72: Git e contibuição com projetos open source usando GitHub

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 73: Git e contibuição com projetos open source usando GitHub

Extras

● .gitignore● Git commit ­­ammend● Git Stash● GitHub pages● Milestones● Hooks

Page 74: Git e contibuição com projetos open source usando GitHub

Dúvidas?

Page 75: Git e contibuição com projetos open source usando GitHub

@BrOrlandi

[email protected]

www.slideshare.net/BrunoOrlandi

Obrigado!

Page 76: Git e contibuição com projetos open source usando GitHub

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 77: Git e contibuição com projetos open source usando GitHub

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.


Recommended