Minicurso GIT PET Computação
-
Upload
bruno-orlandi -
Category
Technology
-
view
260 -
download
3
description
Transcript of Minicurso GIT PET Computação
![Page 1: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/1.jpg)
Bruno Orlandi
Git e contribuição para projetos Open Source
![Page 2: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/2.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/3.jpg)
Instalando
● Instalar o Git:
sudo aptget install git● Instalar o Gitg:
sudo aptget install gitg
http://gitscm.com
![Page 4: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/4.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/5.jpg)
Conteúdo
● Visão Geral● Comandos Básicos● Publicando e Colaborando● Trabalho em Equipe● Praticar● Praticar● Praticar
![Page 6: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/6.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/7.jpg)
Gerência de Configuração de Software
![Page 8: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/8.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/9.jpg)
Gerência de Configuração de Software
● Identificação● Documentação● Controle● Auditoria
![Page 10: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/10.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/11.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/12.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/13.jpg)
Controle de Versão resolve
● Controle de versão faz o 'merge' entre as alterações.
![Page 14: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/14.jpg)
Distribuído
![Page 15: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/15.jpg)
Controle de Versão
![Page 16: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/16.jpg)
Controle de Versão
![Page 17: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/17.jpg)
O que é Github
● Servidor de repositórios Git● Surgiu em 2008● +3 milhões de usuários
![Page 18: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/18.jpg)
Estão no Github
![Page 19: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/19.jpg)
Usam Git
![Page 20: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/20.jpg)
Alternativas
● Subversion (SVN)● Mercurial● CVS Concurrent Versioning System● Bazaar
● Git é o mais rápido e eficiente
![Page 21: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/21.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/22.jpg)
Antes de começar alguns termos técnios!
![Page 23: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/23.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/24.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/25.jpg)
Vamos começar na prática!
![Page 26: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/26.jpg)
Help
● Quando precisar de ajuda:
git help <command>
![Page 27: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/27.jpg)
Configurando
● Configure seu nome e email:
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/28.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/29.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/30.jpg)
Estados dos arquivos
● Não monitorado (untracked)● Modificado (modified)● Preparado (staged)● Consolidado (commited)
![Page 31: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/31.jpg)
Estados dos arquivos
![Page 32: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/32.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/33.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/34.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/35.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/36.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/37.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/38.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/39.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/40.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/41.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/42.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/43.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/44.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/45.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/46.jpg)
Branching
Criando ramificações do repositório
![Page 47: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/47.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/48.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/49.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/50.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/51.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/52.jpg)
Git Rebase
● Quando a Branch pai sofre alterações e desejase 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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/53.jpg)
Git Rebase
● Quando a Branch pai sofre alterações e desejase 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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/54.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/55.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/56.jpg)
Github e Remotes
![Page 57: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/57.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/58.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/59.jpg)
Criar conta no Github
● Acessem https://github.com/● Criem uma conta utilizando utilizando o
mesmo email configurado no git config.● Github permite autenticação por chaves SSH.
Use isto!
![Page 60: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/60.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/61.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/62.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/63.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/64.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/65.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/66.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/67.jpg)
Vamos praticar mais!
![Page 68: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/68.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/69.jpg)
Extras
● .gitignore● Git commit ammend● Git Stash e Stash Pop● Milestones● Hooks● Github pages
![Page 70: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/70.jpg)
Dúvidas?
![Page 72: Minicurso GIT PET Computação](https://reader033.fdocument.pub/reader033/viewer/2022052906/558de66c1a28abf9428b47d7/html5/thumbnails/72.jpg)
Obrigado!http://goo.gl/XEsbPQ