Introdução ao Git - Semac 2016

312 visualizações

Publicada em

Palestra: Introdução ao Git
Data: 04/10/2016
SEMAC 2016 - Unesp de São José do Rio Preto - SP, Brasil

Publicada em: Tecnologia
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
312
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
10
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução ao Git - Semac 2016

  1. 1. Introdução ao Git
  2. 2. 1. Quem sou eu? $ git config user.name "Victor Hugo Souza" $ git config user.email "vhbsouza@gmail.com" $ git config user.github "/vhbsouza" $ git config user.work "Accurate Software Ltda." $ git config user.skills "Java, Ruby, PHP, Angular, Git"
  3. 3. 2. Agenda
  4. 4. 3. O que é o Git? 
  5. 5. 3.1 Controle de Versão
  6. 6. 3.1.1 Sistema de Controle de Versão Local
  7. 7.  Como trabalhar em equipe se a ferramenta é pra uso local?
  8. 8. 3.1.2 Sistema de Controle de Versão Centralizado
  9. 9.  Ponto único de falha já que qualquer problema no servidor, perde‐se tudo!
  10. 10. 3.1.3 Sistema de Controle de Versão Descentralizado
  11. 11.  Cada cliente possui uma cópia completa do repositório!
  12. 12. 3.2 História do
  13. 13. Eu sou um desgraçado egocêntrico, então batizo todos os meus projetos com meu nome. Primeiro Linux, agora Git. -- Linus Torvalds “ “
  14. 14.   2005
  15. 15. 3.3 Principais Caracterís cas
  16. 16. 3.3.1 Snapshots ao invés de patches Patches (Lista de Mudanças entre arquivos)
  17. 17. 3.3.1 Snapshots ao invés de patches Snapshots ("Foto" do repositório inteiro)
  18. 18. 3.3.2 Maioria das operações são locais  Sem LOCK em arquivos     Sem necessidade de rede para:   COMMITS, LOG, DIFF
  19. 19. 3.3.3 Git   integridade dos dados Checksum ‐ Hash SHA‐1  24b9da6552252987aa493b52f8696cd6d3b00373
  20. 20. 3.3.4 Os Três Estados Estado Área Descrição Modified Working Directory Arquivo modi cado que ainda não foi consolidado Staged Staging Area Arquivo modi cado que é selecionado para próx. consolidação "Commit" Commited HEAD Git Directory Arquivos consolidados "commitados" no Repositório
  21. 21. 3.3.4 Os Três Estados
  22. 22. 3.4 Vantagens e Desvantagens Vantagens Desvantagens Rápido Maior complexidade Independência (Descentralizado) Maior necessidade de estudo para um uso efetivo Rami cações
  23. 23. Tech Talk: Linus Torvalds on git
  24. 24. 4. Instalação
  25. 25. 4.1 Windows  Git for Windows h ps://git‐for‐windows.github.io/
  26. 26. 4.2 OSX Homebrew $ brew install git h p://brew.sh/
  27. 27. 4.3 Linux    Debian/Ubuntu $ sudo apt-get install git Fedora $ dnf install git ArchLinux $ pacman -S git Demais distros ... https://git-scm.com/download/linux
  28. 28. 4.3.1 Auto Completar $ cd ~ $ wget "https://goo.gl/hhzDgN" -O ".git-completion.bash" $ echo "source ~/.git-completion.bash" >> .bashrc
  29. 29. 5. Github h p://github.com
  30. 30. Adeus enviar código por
  31. 31. 5.1 Criar Conta 5.2 Criar Repositório
  32. 32. 5.3 Adicionar chave SSH no Github $ ls -al ~/.ssh $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" $ eval "$(ssh-agent -s)" $ ssh-add ~/.ssh/id_rsa $ sudo apt-get install xclip $ xclip -sel clip < ~/.ssh/id_rsa.pub Inserir em Se ngs > SSH and GPG keys > Add SSH key
  33. 33. 5.4 Github Students Pack h ps://educa on.github.com/pack
  34. 34. 6. Git Básico
  35. 35. 6.0 Ajuda $ git help [comando] ex.:  git help init
  36. 36. 6.1 Configurar Git $ git config [options] .gitconfig
  37. 37. 6.1.1 Configurar Usuário $ git config --global user.name "Linus Torvalds" $ git config --global user.name "linus@linux.com" 6.1.2 Cache ‐ Login $ git config --global credential.helper cache $ git config --global credential.helper 'cache --timeout=7200' Adicione --global para de nir escopo de con guração à nível de usuário.
  38. 38. 6.1.3 Configurar MERGETOOL $ git config --global merge.tool meld 6.1.3 Verificar configuração $ git config --global user.name > Victor Hugo Souza
  39. 39. 6.1.3 Listar Configurações $ git config --list user.name=Victor Hugo Souza user.email=victor.souza@accurate.com.br merge.tool=meld credential.helper=cache --timeout=36000 log.decorate=short color.ui=auto color.interactive=auto color.diff=auto color.branch=auto color.status=auto pager.show-branch=true format.numbered=auto push.default=simple --global também pode ser adicionado aqui.
  40. 40. 6.2 Criar Repositório Inicia repositório git dentro do diretório $ git init .git
  41. 41. 6.3 Clonar Repositório Faz cópia do repositório $ git clone [options] [url_do_repositorio] [diretorio] HTTPS  ou  SSH
  42. 42. 6.3 git clone [op ons] [diretorio] Opção Descrição -- branch Clona a partir de branch especí ca -- depth Clona até um nivel de "profundidade" no histórico do repositório Se não for especi cado diretório ele utilizará o padrão
  43. 43. 6.4 Add Adiciona arquivos para próximo snapshot(commit) $ git add [options] <pathspec>
  44. 44. 6.4 git add [op ons] <pathspec> git add trabalho_*.c Opção Descrição -n, --dry-run Simula o que aconteceria se o comando fosse executado -p, --patch Adiciona interativamente trechos de um arquivo -A, --all git add * Working Directory   Staging Area
  45. 45. 6.5 Commit Consolida dados selecionados para o repositório $ git commit [options] <pathspec>
  46. 46. 6.5 git commit [op ons] <pathspec> Opção Descrição -m, --message Mensagem obrigatória --amend Recuperar ultimo commit -p, --patch Adiciona interativamente trechos de um arquivo -A, --all git commit Staging Area   Git Directory
  47. 47. 6.6 Tags Referências a pontos importantes do projeto git tag git tag -a v1.4 -m 'my version 1.4'
  48. 48. 6.7 Status Lista arquivos modificados em relação a ul ma versão $ git status [options] <pathspec>
  49. 49. 6.7 git status [op ons] <pathspec> Opção Descrição -s, --short Versão resumida do git status -- ignored Exibe arquivos ignorados -vv Exibe a diferença de conteúdo entre os arquivos
  50. 50. 6.8 Log Lista histórico de modificações consolidadas "commitadas" do projeto $ git log [options]
  51. 51. 6.8 git log [op ons] Opção Descrição -n <limit> Limita numero de commits -p <limit> Exibe diff do commit --oneline Versão condensada do histórico --stat Lista quais arquivos e nro de linhas alteradas --author=" <name>" Lista commits por autor $ git log --graph --decorate --oneline
  52. 52. 6.9 Diff Exibe diferença entre versões dos arquivos $ git diff [options] git diff 1234a 987d2
  53. 53. 6.9 git diff [op ons] $ git diff diff --git a/benchmarks.rb b/benchmarks.rb index 3cb747f..da65585 100644 --- a/benchmarks.rb +++ b/benchmarks.rb @@ -36,6 +36,10 @@ def main @commit.parents[0].parents[0].parents[0] end + run_code(x, 'commits 1') do + git.commits.size + end + run_code(x, 'commits 2') do log = git.commits('master', 15) log.size
  54. 54. 6.10 Stash Salva modificações em andamento em um rascunho git stash [options] [config] git stash apply stash@{0}
  55. 55. 6.10 git stash [op ons] [config] Opção Descrição list Lista rascunhos disponiveis show Exibe conteúdo de rascunho selecionado save Salva modi cações em novo rascunho apply Exibe a diferença de conteúdo entre os arquivos branch Cria rami cação com conteúdo do rascunho clear Remove todos os rascunhos
  56. 56. 6.10 git stash [op ons] [config] Config Descrição -u Incluir arquivos não monitorados --all Inclui arquivos ignorados no rascunho -- patch Escolhe interativamente trechos que irão para o rascunho
  57. 57. 6.10 git stash [op ons] [config] Tracked  Files Untracked  Files Ignored Files git stash git stash ­u git stash ­a git stash options
  58. 58. 6.11 Ignorando Arquivos Adicione um arquivo  .gitignore  para definir o que será ignorado pelo git.
  59. 59. 6.11 Ignorando Arquivos # Este é um comentário build/ #diretório *.[oa] # ignora terminados em .o ou .a # mas rastreie lib.a, mesmo que você tenha ignorado # arquivos terminados em .a acima !lib.a *.class *.exe doc/*.txt  Ignorando arquivo já versionado: git rm --cached [nome_arquivo]
  60. 60. 6.12 Branch Ramificações que permitem modificações independentes git branch git branch <name> git branch -d <name> git branch -m <new-name> git checkout -b <new-name>
  61. 61. 6.12 Branch
  62. 62. 6.13 Ciclo de Vida
  63. 63. 6.13 Ciclo de Vida
  64. 64. 7. Desfazendo modificações
  65. 65. 7.1 Checkout Descartando alterações da Working Directory $ git checkout -- <nome_arquivo> git checkout 123ade git checkout 452eac trabalho.c
  66. 66. 7.2 Reset Descartando alterações reescrevendo histórico $ git reset HEAD <nome_arquivo>
  67. 67. 7.2 git reset <commit> [op ons] Op ons Descrição --hard Desfaz alterações descartando Working Directory --soft Desfaz alterações preservando modi cações --patch Escolhe interativamente trechos que irão para o rascunho
  68. 68. 7.3 Revert Descartando alterações sem remover histórico (patching) $ git revert <commit> [options]
  69. 69. 7.3.1 Revert vs Reset
  70. 70. 8. Colaboração
  71. 71. 8.1 Remote Adiciona repositorio remoto ao projeto git remote add <name> <url> git remote rm <name> git remote rename <old-name> <new-name>
  72. 72. 8.2 Fetch Importa commits de repositório remoto para local git fetch <remote> git fetch <remote> <branch>
  73. 73. 8.3 Merge Mesclando commits git merge <remote>/<branch>
  74. 74. 8.3 Merge  <master>     <outro> $ git checkout master $ git merge origin/outro
  75. 75. 8.4 Pull Fetch + Merge git pull <remote> git pull <remote> <branch> git pull --rebase <remote>  
  76. 76. 8.4 Pull
  77. 77. 8.4 Pull
  78. 78. 8.4 Pull
  79. 79. 8.5 Push Enviando commits para repositório remoto git push -u <remote> <branch> git push origin v1.5 git push origin --tags git push :<branch-name>
  80. 80. 8.6 Ciclo de Vida ‐ Remote
  81. 81. 9 GitKraken h ps://www.gitkraken.com/
  82. 82. Obrigado 

×