Introdução ao Git
1. Quem sou eu?
$ git config user.name "Victor Hugo Souza"
$ git config user.email "vhbsouza@gmail.com"
$ git config user....
2. Agenda
3. O que é o Git? 
3.1 Controle de Versão
3.1.1 Sistema de Controle de Versão Local
 Como trabalhar em equipe se a ferramenta é pra uso
local?
3.1.2 Sistema de Controle de Versão
Centralizado
 Ponto único de falha já que qualquer problema no
servidor, perde‐se tudo!
3.1.3 Sistema de Controle de Versão
Descentralizado
 Cada cliente possui uma cópia completa do
repositório!
3.2 História do
Eu sou um desgraçado egocêntrico, então batizo
todos os meus projetos com meu nome. Primeiro
Linux, agora Git.
-- Linus To...
 
2005
3.3 Principais Caracterís cas
3.3.1 Snapshots ao invés de patches
Patches (Lista de Mudanças entre arquivos)
3.3.1 Snapshots ao invés de patches
Snapshots ("Foto" do repositório inteiro)
3.3.2 Maioria das operações são
locais
 Sem LOCK em arquivos   
 Sem necessidade de rede para:  
COMMITS, LOG, DIFF
3.3.3 Git   integridade dos dados
Checksum ‐ Hash SHA‐1 
24b9da6552252987aa493b52f8696cd6d3b00373
3.3.4 Os Três Estados
Estado Área Descrição
Modified
Working
Directory
Arquivo modi cado que
ainda não foi consolidado
Stag...
3.3.4 Os Três Estados
3.4 Vantagens e Desvantagens
Vantagens Desvantagens
Rápido Maior complexidade
Independência
(Descentralizado)
Maior necess...
Tech Talk: Linus Torvalds on git
4. Instalação
4.1 Windows 
Git for Windows
h ps://git‐for‐windows.github.io/
4.2 OSX
Homebrew
$ brew install git
h p://brew.sh/
4.3 Linux   
Debian/Ubuntu
$ sudo apt-get install git
Fedora
$ dnf install git
ArchLinux
$ pacman -S git
Demais distros .....
4.3.1 Auto Completar
$ cd ~
$ wget "https://goo.gl/hhzDgN" -O ".git-completion.bash"
$ echo "source ~/.git-completion.bash...
5. Github
h p://github.com
Adeus enviar código por
5.1 Criar Conta
5.2 Criar Repositório
5.3 Adicionar chave SSH no Github
$ ls -al ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
$ eval "$(ssh-ag...
5.4 Github Students Pack
h ps://educa on.github.com/pack
6. Git Básico
6.0 Ajuda
$ git help [comando]
ex.:  git help init
6.1 Configurar Git
$ git config [options]
.gitconfig
6.1.1 Configurar Usuário
$ git config --global user.name "Linus Torvalds"
$ git config --global user.name "linus@linux.com"...
6.1.3 Configurar MERGETOOL
$ git config --global merge.tool meld
6.1.3 Verificar configuração
$ git config --global user.name...
6.1.3 Listar Configurações
$ git config --list
user.name=Victor Hugo Souza
user.email=victor.souza@accurate.com.br
merge.to...
6.2 Criar Repositório
Inicia repositório git dentro do diretório
$ git init
.git
6.3 Clonar Repositório
Faz cópia do repositório
$ git clone [options]
[url_do_repositorio] [diretorio]
HTTPS  ou  SSH
6.3 git clone [op ons] [diretorio]
Opção Descrição
--
branch
Clona a partir de branch especí ca
--
depth
Clona até um nive...
6.4 Add
Adiciona arquivos para próximo snapshot(commit)
$ git add [options] <pathspec>
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
f...
6.5 Commit
Consolida dados selecionados para o repositório
$ git commit [options] <pathspec>
6.5 git commit [op ons] <pathspec>
Opção Descrição
-m,
--message
Mensagem obrigatória
--amend Recuperar ultimo commit
-p,
...
6.6 Tags
Referências a pontos importantes do projeto
git tag
git tag -a v1.4 -m 'my version 1.4'
6.7 Status
Lista arquivos modificados em relação a ul ma versão
$ git status [options] <pathspec>
6.7 git status [op ons] <pathspec>
Opção Descrição
-s,
--short
Versão resumida do git status
--
ignored
Exibe arquivos ign...
6.8 Log
Lista histórico de modificações consolidadas
"commitadas" do projeto
$ git log [options]
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 ...
6.9 Diff
Exibe diferença entre versões dos arquivos
$ git diff [options]
git diff 1234a 987d2
6.9 git diff [op ons]
$ git diff
diff --git a/benchmarks.rb b/benchmarks.rb
index 3cb747f..da65585 100644
--- a/benchmarks....
6.10 Stash
Salva modificações em andamento em um rascunho
git stash [options] [config]
git stash apply stash@{0}
6.10 git stash [op ons] [config]
Opção Descrição
list Lista rascunhos disponiveis
show Exibe conteúdo de rascunho seleciona...
6.10 git stash [op ons] [config]
Config Descrição
-u Incluir arquivos não monitorados
--all Inclui arquivos ignorados no ras...
6.10 git stash [op ons] [config]
Tracked 
Files
Untracked 
Files
Ignored
Files
git stash
git stash ­u
git stash ­a
git stas...
6.11 Ignorando Arquivos
Adicione um arquivo  .gitignore  para definir o que será
ignorado pelo git.
6.11 Ignorando Arquivos
# Este é um comentário
build/ #diretório
*.[oa] # ignora terminados em .o ou .a
# mas rastreie lib...
6.12 Branch
Ramificações que permitem modificações independentes
git branch
git branch <name>
git branch -d <name>
git branc...
6.12 Branch
6.13 Ciclo de Vida
6.13 Ciclo de Vida
7. Desfazendo modificações
7.1 Checkout
Descartando alterações da Working Directory
$ git checkout -- <nome_arquivo>
git checkout 123ade
git checkout...
7.2 Reset
Descartando alterações reescrevendo histórico
$ git reset HEAD <nome_arquivo>
7.2 git reset <commit> [op ons]
Op ons Descrição
--hard
Desfaz alterações descartando Working
Directory
--soft
Desfaz alte...
7.3 Revert
Descartando alterações sem remover histórico
(patching)
$ git revert <commit> [options]
7.3.1 Revert vs Reset
8. Colaboração
8.1 Remote
Adiciona repositorio remoto ao projeto
git remote add <name> <url>
git remote rm <name>
git remote rename <old-...
8.2 Fetch
Importa commits de repositório remoto para local
git fetch <remote>
git fetch <remote> <branch>
8.3 Merge
Mesclando commits
git merge <remote>/<branch>
8.3 Merge  <master>     <outro>
$ git checkout master
$ git merge origin/outro
8.4 Pull
Fetch + Merge
git pull <remote>
git pull <remote> <branch>
git pull --rebase <remote>  
8.4 Pull
8.4 Pull
8.4 Pull
8.5 Push
Enviando commits para repositório remoto
git push -u <remote> <branch>
git push origin v1.5
git push origin --tag...
8.6 Ciclo de Vida ‐ Remote
9 GitKraken
h ps://www.gitkraken.com/
Obrigado 
Próximos SlideShares
Carregando em…5
×

Introdução ao Git - Semac 2016

491 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
491
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
21
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 

×