Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução ao Git

Introdução ao Git

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

Avatar for Victor Hugo Souza

Victor Hugo Souza

October 04, 2016

Other Decks in Programming

Transcript

  1. 1. Quem sou eu? $ git config user.name "Victor Hugo

    Souza" $ git config user.email "[email protected]" $ git config user.github "/vhbsouza" $ git config user.work "Accurate Software Ltda." $ git config user.skills "Java, Ruby, PHP, Angular, Git"
  2. Eu sou um desgraçado egocêntrico, então batizo todos os meus

    projetos com meu nome. Primeiro Linux, agora Git. -- Linus Torvalds “ “
  3. 3.3.2 Maioria das operações são locais Sem LOCK em arquivos

    Sem necessidade de rede para: COMMITS, LOG, DIFF
  4. 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
  5. 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
  6. 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
  7. 4.3.1 Auto Completar $ cd ~ $ wget "https://goo.gl/hhzDgN" -O

    ".git-completion.bash" $ echo "source ~/.git-completion.bash" > .bashrc
  8. 5.3 Adicionar chave SSH no Github $ ls -al ~/.ssh

    $ ssh-keygen -t rsa -b 4096 -C "[email protected]" $ 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
  9. 6.1.1 Configurar Usuário $ git config --global user.name "Linus Torvalds"

    $ git config --global user.name "[email protected]" 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.
  10. 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
  11. 6.1.3 Listar Configurações $ git config --list user.name=Victor Hugo Souza

    [email protected] 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.
  12. 6.3 Clonar Repositório Faz cópia do repositório $ git clone

    [options] [url_do_repositorio] [diretorio] HTTPS ou SSH
  13. 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
  14. 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
  15. 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
  16. 6.7 Status Lista arquivos modificados em relação a ul ma

    versão $ git status [options] <pathspec>
  17. 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
  18. 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
  19. 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
  20. 6.10 Stash Salva modificações em andamento em um rascunho git

    stash [options] [config] git stash apply stash@{0}
  21. 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
  22. 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
  23. 6.10 git stash [op ons] [config] Tracked Files Untracked Files

    Ignored Files git stash git stash ­u git stash ­a git stash options
  24. 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]
  25. 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>
  26. 7.1 Checkout Descartando alterações da Working Directory $ git checkout

    -- <nome_arquivo> git checkout 123ade git checkout 452eac trabalho.c
  27. 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
  28. 8.1 Remote Adiciona repositorio remoto ao projeto git remote add

    <name> <url> git remote rm <name> git remote rename <old-name> <new-name>
  29. 8.2 Fetch Importa commits de repositório remoto para local git

    fetch <remote> git fetch <remote> <branch>
  30. 8.4 Pull Fetch + Merge git pull <remote> git pull

    <remote> <branch> git pull --rebase <remote>
  31. 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>