Introdução   Configurações   Primeiros passos    Conceitos    Servidores Remotos   Tips, Tricks & FAQ




                                    Introdução ao Git

                                  Felipe dos Santos Silveira

                                               SECCOM 2012


                                    17 de Outubro de 2012
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Histórico




      Criado por Linus Torvalds para desenvolvimento do Kernel Linux
             Distribuído
             Apto ao desenvolvimento não linear
             Trabalha eficientemente (tempo e espaço) com projetos
             grandes
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Características




             Armazena snapshots de arquivos e não diferença entre versões
             Maioria das operações são locais
             Mantém integridade (via hashes SHA-1)
             Dados só são adicionados ao repositório
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Estados de modificações


      Existem 3 estados em que uma modificação pode estar
      Working directory
      Mudanças, arquivos adicionados, arquivos removidos.

      Staging area
      Snapshots de coisas do Working directory que serão commitados.

      Repositório
      Aqui ficam armazenados os commits feitos. De maneira geral, eles
      não são mais editados.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Estrutura de um commit



      Um commit é composto por três partes:
             Autor, informações do commiter, data
             Um snapshot dos arquivos do repositório
             Uma mensagem de commit
             Uma lista de commits do qual ele derivou
      À partir dessas informações é calculado o hash SHA-1, que é usado
      para identificar unicamente esse commit.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Exemplo de commits
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Instalação




      Veja como instalar na sua distribuição/sistema operacional no site
      oficial: git-scm.com/downloads
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Configuração




      Antes de começar a trabalhar precisamos nos identificar.
      Para isso usamos o comando git config
      Definindo variáveis de usuário
      git config --global user.name “<Seu nome>”
      git config --global user.email “<Seu email>”
      git config --global core.editor “gedit”
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Níveis de configuração




      Existem 3 níveis de configuração:
             local para configurações somente para o repositório atual
             global para configurações somente para o usuário atual
             system para configurações para todos usuários do sistema
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git help




      Mostra uma tela de ajuda com descrições dos comandos.
      Ajuda específica
      git help <comando> Mostra uma melhor descrição e mais
      opções do comando selecionado.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git init




      Um repositório é criado executando o comando git init.
      Agora já podemos começar o trabalho =)
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git add




      As mudanças são adicionadas na staging area utilizando o
      comando git add <arquivo>
      Lembre-se
      Um snapshot do arquivo é guardado na staging area. Caso mais
      modificações sejam feitas, elas precisam ser adicionadas de novo.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git status e git diff



      Como está o nosso working directory e staging area?
             O comando git status nos mostra o estado atual do
             repositório, além de algumas outras dicas, que veremos em
             breve.
             O comando git diff nos mostra as diferenças entre o working
             directory e o último commit.
             Para ver mudanças apenas da staging area use git diff
             --cached.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git remove


      Às vezes precisamos remover um arquivo do nosso repositório.
      Podemos atingir esse objetivo com o comando git remove
      <arquivo>
      Cuidado
      O comando git remove também deleta o arquivo do sistema.
      Utilize a git remove --cached <arquivo> para manter ele em
      disco.

      Lembre-se
      As operações do git são aditivas. Logo, ainda é possível recuperar o
      arquivo deletado.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git commit

      Com as mudanças adicionadas à staging area podemos fazer o
      nosso primeiro commit com git commit
      O editor que configuramos com core.editor será chamado e
      poderemos ver as nossas mudanças e editar a nossa mensagem de
      commit.
      Boa prática
      Uma boa mensagem de commit é composta de duas partes
      separadas por uma linha em branco: Uma mensagem de até 80
      caracteres que descreve brevemente o commit. E, se necessário,
      uma melhor descrição do commit.

      Commit message
      A mensagem do commit também pode ser passada por parâmetro.
      git commit -m <commit message>
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git log




      A qualquer momento podemos ver como está o repositório com o
      comando git log
      Formatação
      A saída do comando é totalmente configurável. Não esqueça de ver
      as opções com git help log.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Referências



      Como você deve ter percebido, todos os commits são referenciados
      por seus hashes. Porém, podemos usar um modo mais amigável de
      referenciá-los. Para isso, usamos Referências, que são ponteiros
      para commits. Existem 3 tipos de referências:
             tag: Um ponteiro para um commit específico. Ela não se
             move sob qualquer circunstância.
             branch: Um ponteiro para uma “linha” de commits. É
             atualizado quando há um novo commit no branch.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



HEAD



      HEAD é a referência para onde estamos. Pode estar em dois
      estados:
             Apontando para um branch. Assim, os commits feitos à partir
             de HEAD atualizarão o ponteiro do branch.
             Apontando para uma tag ou commit. Esse estado é chamado
             de detached HEAD e os commits feitos só serão alcançáveis
             à partir de seus hashes.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Um repositório com referências
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git checkout




      Move o ponteiro de HEAD para a o destino especificado (branch,
      tag, commit)
      Obtendo um arquivo de outro commit
      Para trazer para o working directory o arquivo X no commit Y,
      execute git checkout Y -- X.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git reset




      Move o pointeiro do branch atual.
      Cuidado
      O comando reset move o ponteiro do branch, e não a referência de
      HEAD, como o checkout. Ou seja, os commits do branch antigo
      não serão mais alcançados.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git reset --hard versao-1.0
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Criando referências




      Criando uma tag à partir do commit apontado por HEAD
      git tag <nome-da-tag>

      Criando um branch à partir do commit apontado por HEAD
      git checkout -b <nome-do-branch>
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git merge


      Um “merge“ é um ponto onde duas linhas separadas se encontram.
      Ou seja, é a junção de dois branches para criar um commit que terá
      dois pais.
      Exemplo
      git merge NovaFeature

      fast forward
      Quando o alvo do comando for um sucessor direto do último
      commit do branch atual, o merge é chamado de fast forward e
      somente as referências são atualizadas.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Conflitos


      Caso haja um conflito que o git não consiga resolver, o arquivo com
      conflito será alterado para que possamos tomar providências.
      Lembre-se
      O comando git status nos dá informações sobre conflitos que
      ocorreram.

      Exemplo
      O arquivo merge-conflict.tar.bz2 contém um exemplo de um
      conflito para vocês resolverem.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git rebase




      O comando rebase nos permite aplicar nossas mudanças partindo
      de outro commit base.
      Exemplo
      git rebase <branch>
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Estado inicial
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Após algum tempo
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Após: git rebase master
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Mais rebase


      Você ainda pode usar a opção -i para editar os commits que serão
      adicionados.
             reword: mudar a mensagem do commit
             edit: parar para editar o commit
             squash: junta com o commit anterior (mantém ambas
             mensagens)
             fixup: junta com o commit anterior (usa só a mensagem do
             anterior)
      Se um linha for apagada, o commit não será usado.
      Os commits são aplicados de cima para baixo, e podem ser
      reordenados à vontade.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git clone




      O comando git clone faz uma cópia de um repositório externo para
      a sua máquina.
      Clonando o repositório do linux
      git clone git://github.com/torvalds/linux.git
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Sincronização



      Como as operações são sempre locais, precisamos de algum modo
      pra sincronizar os repositórios.
             git fetch: apenas baixa as informações sobre os servidores
             remotos
             git pull: a mesma coisa que fetch, mas faz merge do branch
             atual com o seu respectivo remoto.
             git push: lança as atualizações para o servidor de todos os
             branches locais que têm um branch remoto associado.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Referências
      As referências de servidores remotos têm como prefixo o nome do
      remoto. E o nome do primeiro remote geralmente é “origin”.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git pull




      Assumindo que o branch local seja “master”
      Equivalente a
      git fetch
      get merge origin/master

      Gera muitos commits de merge em um repositório ativo.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



git push

      Somente commits que sejam fast forward serão atualizados no
      servidor.
      Criando um branch remoto
      Por padrão, todos os branches são locais. Para criar um branch no
      servidor, utilize:
      git push -u <remote> <branch-local> (a opção -u configura o
      seu repositório para associar o branch remoto ao local).

      Enviando tags
      Por padrão as tags também são locais. Para enviar uma tag para
      um servidor, utilize:
      git push <remote> <tag-local>.
      Note: A opção --tags transferirá todas as tags locais para o
      servidor.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Github



      Acesse github.com
      Usando SSH
      https://help.github.com/articles/generating-ssh-keys
      Troubleshooting

      Usando HTTPS
      https://help.github.com/articles/set-up-git
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Fiz um commit errado. Como corrijo?


      Depende.
             Se você já deu push no commit, ele já está no servidor, logo
             não é uma boa idéia editá-lo.
             Porém, você pode criar um novo commit que desfaz a
             mudança do commit.
             git revert <commit>
             Se você ainda não deu push temos duas opções:
             Editar as mudanças necessárias e “editar” o último commit
             usando git commit --amend
             Criar um novo commit. Reordenar as mudanças e juntar as
             modificações com a opção fixup do comand git rebase -i
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ


Sempre preciso adicionar todos os arquivos com
modificações à staging area?



      Não. O comando git commit -a commita todos os arquivos
      tracked. Independentemente da staging area.
      Cuidado
      Arquivos tracked são arquivos que o git já conhece (pois você já
      executou git add nele).
      Arquivos novos sempre devem ser adicionados
      Uso constante de git commit -a leva a commits com arquivos
      faltando.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Como faço para ignorar um arquivo?




      Crie um arquivo chamado .gitignore dentro do seu repositório e
      coloque o nome do arquivo dentro dele.
      Várias regras são separadas por quebras de linha e são aplicadas à
      todos os sub-diretórios.
      manual
      git help gitignore
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Quando devo usar merge e quando devo usar rebase?




      Devido à característica especial de merges criarem um commit com
      vários pais. É uma boa prática usar isso apenas para os casos onde
      realmente ocorreu a junção de dois caminhos destintos (e não
      sempre que você esquecer de sincronizar com o repositório remoto).
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



“Perdi” um commit. E agora?



      Você pode usar o comando git reflog para ver os últimos estados
      onde HEAD estava. Assim podendo aplicar um reset ou
      cherry-pick.
      cherry-pick?
      O comando git cherry-pick permite você “copiar” um commit de
      outro lugar e aplicar em seu HEAD.
      Um novo commit será gerado com a mesmas mudanças, porém,
      com diferentes hashes.
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Existe outras formas de referenciar um commit?


      Sim. Você pode referenciar um commit caminhando por sua “árvore
      genealógica”.
      Exemplo
      <commit>˜N Significa o N-ésimo pai do commit. <commit>˜0
      Significa ele mesmo.

      Você também pode especificar um intervalo de commits.
      Manual
      git help gitrevisions
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ


Essas coisas de terminal não são pra mim. E interface
gráfica, tem?




      Claro =)
      Dê uma olhada nesse link http://git-scm.com/downloads/guis
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Algumas coisas interessantes



             git status
             git merge --ff-only / git merge --no-ff
             git rebase -i
             git log --graph --oneline --decorate=short --date-order
             --all
             Plugin de git para o eclipse
             git config --global alias.co checkout
             git config --global -e
Introdução   Configurações    Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Perguntas?




                            Contato: felipessilveira@gmail.com
Introdução   Configurações   Primeiros passos   Conceitos   Servidores Remotos   Tips, Tricks & FAQ



Referências




             http://git-scm.com/book
             git help
             Blogs aleatórios e respostas no Stack Overflow.

Ferramenta git

  • 1.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Introdução ao Git Felipe dos Santos Silveira SECCOM 2012 17 de Outubro de 2012
  • 2.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Histórico Criado por Linus Torvalds para desenvolvimento do Kernel Linux Distribuído Apto ao desenvolvimento não linear Trabalha eficientemente (tempo e espaço) com projetos grandes
  • 3.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Características Armazena snapshots de arquivos e não diferença entre versões Maioria das operações são locais Mantém integridade (via hashes SHA-1) Dados só são adicionados ao repositório
  • 4.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Estados de modificações Existem 3 estados em que uma modificação pode estar Working directory Mudanças, arquivos adicionados, arquivos removidos. Staging area Snapshots de coisas do Working directory que serão commitados. Repositório Aqui ficam armazenados os commits feitos. De maneira geral, eles não são mais editados.
  • 5.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Estrutura de um commit Um commit é composto por três partes: Autor, informações do commiter, data Um snapshot dos arquivos do repositório Uma mensagem de commit Uma lista de commits do qual ele derivou À partir dessas informações é calculado o hash SHA-1, que é usado para identificar unicamente esse commit.
  • 6.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Exemplo de commits
  • 7.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Instalação Veja como instalar na sua distribuição/sistema operacional no site oficial: git-scm.com/downloads
  • 8.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Configuração Antes de começar a trabalhar precisamos nos identificar. Para isso usamos o comando git config Definindo variáveis de usuário git config --global user.name “<Seu nome>” git config --global user.email “<Seu email>” git config --global core.editor “gedit”
  • 9.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Níveis de configuração Existem 3 níveis de configuração: local para configurações somente para o repositório atual global para configurações somente para o usuário atual system para configurações para todos usuários do sistema
  • 10.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git help Mostra uma tela de ajuda com descrições dos comandos. Ajuda específica git help <comando> Mostra uma melhor descrição e mais opções do comando selecionado.
  • 11.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git init Um repositório é criado executando o comando git init. Agora já podemos começar o trabalho =)
  • 12.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git add As mudanças são adicionadas na staging area utilizando o comando git add <arquivo> Lembre-se Um snapshot do arquivo é guardado na staging area. Caso mais modificações sejam feitas, elas precisam ser adicionadas de novo.
  • 13.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git status e git diff Como está o nosso working directory e staging area? O comando git status nos mostra o estado atual do repositório, além de algumas outras dicas, que veremos em breve. O comando git diff nos mostra as diferenças entre o working directory e o último commit. Para ver mudanças apenas da staging area use git diff --cached.
  • 14.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git remove Às vezes precisamos remover um arquivo do nosso repositório. Podemos atingir esse objetivo com o comando git remove <arquivo> Cuidado O comando git remove também deleta o arquivo do sistema. Utilize a git remove --cached <arquivo> para manter ele em disco. Lembre-se As operações do git são aditivas. Logo, ainda é possível recuperar o arquivo deletado.
  • 15.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git commit Com as mudanças adicionadas à staging area podemos fazer o nosso primeiro commit com git commit O editor que configuramos com core.editor será chamado e poderemos ver as nossas mudanças e editar a nossa mensagem de commit. Boa prática Uma boa mensagem de commit é composta de duas partes separadas por uma linha em branco: Uma mensagem de até 80 caracteres que descreve brevemente o commit. E, se necessário, uma melhor descrição do commit. Commit message A mensagem do commit também pode ser passada por parâmetro. git commit -m <commit message>
  • 16.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git log A qualquer momento podemos ver como está o repositório com o comando git log Formatação A saída do comando é totalmente configurável. Não esqueça de ver as opções com git help log.
  • 17.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Referências Como você deve ter percebido, todos os commits são referenciados por seus hashes. Porém, podemos usar um modo mais amigável de referenciá-los. Para isso, usamos Referências, que são ponteiros para commits. Existem 3 tipos de referências: tag: Um ponteiro para um commit específico. Ela não se move sob qualquer circunstância. branch: Um ponteiro para uma “linha” de commits. É atualizado quando há um novo commit no branch.
  • 18.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ HEAD HEAD é a referência para onde estamos. Pode estar em dois estados: Apontando para um branch. Assim, os commits feitos à partir de HEAD atualizarão o ponteiro do branch. Apontando para uma tag ou commit. Esse estado é chamado de detached HEAD e os commits feitos só serão alcançáveis à partir de seus hashes.
  • 19.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Um repositório com referências
  • 20.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git checkout Move o ponteiro de HEAD para a o destino especificado (branch, tag, commit) Obtendo um arquivo de outro commit Para trazer para o working directory o arquivo X no commit Y, execute git checkout Y -- X.
  • 21.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git reset Move o pointeiro do branch atual. Cuidado O comando reset move o ponteiro do branch, e não a referência de HEAD, como o checkout. Ou seja, os commits do branch antigo não serão mais alcançados.
  • 22.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git reset --hard versao-1.0
  • 23.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Criando referências Criando uma tag à partir do commit apontado por HEAD git tag <nome-da-tag> Criando um branch à partir do commit apontado por HEAD git checkout -b <nome-do-branch>
  • 24.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git merge Um “merge“ é um ponto onde duas linhas separadas se encontram. Ou seja, é a junção de dois branches para criar um commit que terá dois pais. Exemplo git merge NovaFeature fast forward Quando o alvo do comando for um sucessor direto do último commit do branch atual, o merge é chamado de fast forward e somente as referências são atualizadas.
  • 25.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Conflitos Caso haja um conflito que o git não consiga resolver, o arquivo com conflito será alterado para que possamos tomar providências. Lembre-se O comando git status nos dá informações sobre conflitos que ocorreram. Exemplo O arquivo merge-conflict.tar.bz2 contém um exemplo de um conflito para vocês resolverem.
  • 26.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git rebase O comando rebase nos permite aplicar nossas mudanças partindo de outro commit base. Exemplo git rebase <branch>
  • 27.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Estado inicial
  • 28.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Após algum tempo
  • 29.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Após: git rebase master
  • 30.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Mais rebase Você ainda pode usar a opção -i para editar os commits que serão adicionados. reword: mudar a mensagem do commit edit: parar para editar o commit squash: junta com o commit anterior (mantém ambas mensagens) fixup: junta com o commit anterior (usa só a mensagem do anterior) Se um linha for apagada, o commit não será usado. Os commits são aplicados de cima para baixo, e podem ser reordenados à vontade.
  • 31.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git clone O comando git clone faz uma cópia de um repositório externo para a sua máquina. Clonando o repositório do linux git clone git://github.com/torvalds/linux.git
  • 32.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Sincronização Como as operações são sempre locais, precisamos de algum modo pra sincronizar os repositórios. git fetch: apenas baixa as informações sobre os servidores remotos git pull: a mesma coisa que fetch, mas faz merge do branch atual com o seu respectivo remoto. git push: lança as atualizações para o servidor de todos os branches locais que têm um branch remoto associado.
  • 33.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Referências As referências de servidores remotos têm como prefixo o nome do remoto. E o nome do primeiro remote geralmente é “origin”.
  • 34.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git pull Assumindo que o branch local seja “master” Equivalente a git fetch get merge origin/master Gera muitos commits de merge em um repositório ativo.
  • 35.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ git push Somente commits que sejam fast forward serão atualizados no servidor. Criando um branch remoto Por padrão, todos os branches são locais. Para criar um branch no servidor, utilize: git push -u <remote> <branch-local> (a opção -u configura o seu repositório para associar o branch remoto ao local). Enviando tags Por padrão as tags também são locais. Para enviar uma tag para um servidor, utilize: git push <remote> <tag-local>. Note: A opção --tags transferirá todas as tags locais para o servidor.
  • 36.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Github Acesse github.com Usando SSH https://help.github.com/articles/generating-ssh-keys Troubleshooting Usando HTTPS https://help.github.com/articles/set-up-git
  • 37.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Fiz um commit errado. Como corrijo? Depende. Se você já deu push no commit, ele já está no servidor, logo não é uma boa idéia editá-lo. Porém, você pode criar um novo commit que desfaz a mudança do commit. git revert <commit> Se você ainda não deu push temos duas opções: Editar as mudanças necessárias e “editar” o último commit usando git commit --amend Criar um novo commit. Reordenar as mudanças e juntar as modificações com a opção fixup do comand git rebase -i
  • 38.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Sempre preciso adicionar todos os arquivos com modificações à staging area? Não. O comando git commit -a commita todos os arquivos tracked. Independentemente da staging area. Cuidado Arquivos tracked são arquivos que o git já conhece (pois você já executou git add nele). Arquivos novos sempre devem ser adicionados Uso constante de git commit -a leva a commits com arquivos faltando.
  • 39.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Como faço para ignorar um arquivo? Crie um arquivo chamado .gitignore dentro do seu repositório e coloque o nome do arquivo dentro dele. Várias regras são separadas por quebras de linha e são aplicadas à todos os sub-diretórios. manual git help gitignore
  • 40.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Quando devo usar merge e quando devo usar rebase? Devido à característica especial de merges criarem um commit com vários pais. É uma boa prática usar isso apenas para os casos onde realmente ocorreu a junção de dois caminhos destintos (e não sempre que você esquecer de sincronizar com o repositório remoto).
  • 41.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ “Perdi” um commit. E agora? Você pode usar o comando git reflog para ver os últimos estados onde HEAD estava. Assim podendo aplicar um reset ou cherry-pick. cherry-pick? O comando git cherry-pick permite você “copiar” um commit de outro lugar e aplicar em seu HEAD. Um novo commit será gerado com a mesmas mudanças, porém, com diferentes hashes.
  • 42.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Existe outras formas de referenciar um commit? Sim. Você pode referenciar um commit caminhando por sua “árvore genealógica”. Exemplo <commit>˜N Significa o N-ésimo pai do commit. <commit>˜0 Significa ele mesmo. Você também pode especificar um intervalo de commits. Manual git help gitrevisions
  • 43.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Essas coisas de terminal não são pra mim. E interface gráfica, tem? Claro =) Dê uma olhada nesse link http://git-scm.com/downloads/guis
  • 44.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Algumas coisas interessantes git status git merge --ff-only / git merge --no-ff git rebase -i git log --graph --oneline --decorate=short --date-order --all Plugin de git para o eclipse git config --global alias.co checkout git config --global -e
  • 45.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Perguntas? Contato: felipessilveira@gmail.com
  • 46.
    Introdução Configurações Primeiros passos Conceitos Servidores Remotos Tips, Tricks & FAQ Referências http://git-scm.com/book git help Blogs aleatórios e respostas no Stack Overflow.