• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Minicurso Git   Semcomp Beta
 

Minicurso Git Semcomp Beta

on

  • 71 views

 

Statistics

Views

Total Views
71
Views on SlideShare
70
Embed Views
1

Actions

Likes
1
Downloads
2
Comments
0

1 Embed 1

http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Minicurso Git   Semcomp Beta Minicurso Git Semcomp Beta Presentation Transcript

    • Bruno Orlandi Git e contribuição para projetos Open Source
    • Bruno Orlandi ● 4º Ano Ciências de Computação  – ICMC USP ● PET Computação ● HTML5 Web e Mobile ● Gosta de compartilhar  conhecimento ● @BrOrlandi
    • Instalando ● Instalar o Git: sudo apt­get install git ● Instalar o Gitg: sudo apt­get install gitg
    • 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!
    • Conteúdo ● Visão Geral ● Comandos Básicos ● Publicando e Colaborando ● Trabalho em Equipe ● Praticar ● Praticar ● Praticar
    • 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
    • Gerência de Configuração de Software
    • 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?
    • Gerência de Configuração de Software ● Identificação ● Documentação ● Controle ● Auditoria
    • Gerência de Configuração de Software ● Artefatos: – Código fonte – Documentação do Software – Manual de Usuário
    • 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
    • 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
    • Controle de Versão resolve ● Controle de versão faz o 'merge' entre as  alterações.
    • Distribuído
    • Controle de Versão
    • Controle de Versão
    • O que é Github ● Servidor de repositórios Git ● Surgiu em 2008 ● +5 milhões de usuários
    • Estão no Github
    • Usam Git
    • Alternativas ● Subversion (SVN) ● Mercurial ● CVS ­ Concurrent Versioning System ● Bazaar ● Git é o mais rápido e eficiente
    • Servidores Servidores/Suporte git Mercurial SVN Github V Bitbucket V V SourceForge V V V Google Code V V V
    • Antes de começar alguns termos técnios!
    • 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
    • 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.
    • Vamos começar na prática!
    • Instalando ● Instalar o Git: sudo apt­get install git ● Instalar o Gitg: sudo apt­get install gitg
    • Help ● Quando precisar de ajuda: git help <command>
    • Configurando ● Configure seu nome e e­mail: git config ­­global user.name  “Meu Nome” git config ­­global user.email  meuemail@email.com ● Configure cores no terminal: git config ­­global color.ui  true
    • 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
    • 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.”
    • Estados dos arquivos ● Não monitorado (untracked) ● Modificado (modified) ● Preparado (staged) ● Consolidado (commited)
    • Estados dos arquivos
    • 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
    • Status dos arquivos ● Edite o arquivo criado anteriormente ● Crie um novo arquivo e veja o seu status no  repositório
    • 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”
    • 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
    • Git Workflow ● Basicamente a maior parte do trabalho com o  git consiste nestas tarefas: – Editar – Commitar ● Exercite estes comandos!
    • Log e Show git log ● Lista os commits mais recentes. git log –pretty=oneline git shortlog git show [commit] ● Mostra as alterações de um commit ● Commit deve ser especificado pela chave ● Sem parâmetro mostra o ultimo commit
    • Dif git diff ● Exibir diferenças entre commits e branchs git diff [path] ● Diferença no diretório git diff HEAD~1 HEAD ● Mostra o que foi alterado no último commit
    • Ferramenta externa Dif git config ­­global merge.tool  kdiff3 ● Permite usar uma ferramenta externa para  usar no Diff e também no Merge.
    • 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.
    • Git mv e rm ● Git não trata perfeitamente 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.
    • 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.
    • Git reset git reset <file> ● Remove um novo arquivo da staging area. ● Não serve para desfazer alterações, para isso  use: checkout ­­  ● Possui outras funcionalidades.
    • 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.
    • 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.
    • Branching Criando ramificações do repositório
    • 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
    • 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
    • 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
    • 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!
    • Conflitos ● Conflitos podem acontecer ao unirmos  alterações ● Acontecem quando ramificações diferentes  possuem as mesmas linhas nos mesmos  arquivos editadas diferentes
    • 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.
    • 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>
    • Github e Remotes
    • 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.
    • Remote ● Podem receber vários commits. ● Sincronizar o trabalho colaborativo. ● Exige chave SSH. git remote add origin <URL>
    • Criar conta no Github ● Acessem https://github.com/ ● Criem uma conta utilizando utilizando o  mesmo e­mail configurado no git config. ● Gerar chaves SSH no Linux: https://help.github.com/articles/generating­s sh­keys
    • 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.
    • 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
    • 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>
    • Git Clone ● Baixa o repositório remoto. ● Outra forma de criar um repositório local. ● Já vem com o remote configurado. git clone <URL>
    • 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.
    • Issues no Github ● Tradução: Questões. ● Reportar bugs. ● Organizar tarefas a serem feitas. ● Permite comentários dos usuários. ● Pode referenciar commits.
    • 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.
    • Vamos praticar mais!
    • Extras ● .gitignore ● Git commit ­­ammend ● Git Stash e Stash Pop ● Milestones ● Hooks ● Github pages
    • Dúvidas?
    • Convite ● Palestras ● Minicursos ● Concursos ● Prêmios ● Feira de recrutamento ● http://semcomp.icmc.usp.br/ ● facebook.com/semcomp
    • Obrigado! 18 a 22 de Agosto