DEFINIÇÃO:
DIRETÓRIO DE TRABALHO:
FERRAMENTA:

   Desenvolvido em linguagem C;

   Portabilidade;

   Open-Source;

   5 de Abril de 2005;
POR QUÊ?

   BitKeeper gerenciava o código e as versões do Kernel
    do Linux;




   Problema com a licença;

   Necessidade de um controle de versão;

   Criação do Git por Linus Torvalds;
O CRIADOR:
   Linus Benedict Torvalds;

   1991;

   06 de Abril de 2005;

   Comunidade Git;
QUEM ESTÁ USANDO O GIT?
   Android;

   Google;

   Kernel do Linux;

   Ruby on Rails;

   Debian;




e muitos outros.
INSTALAÇÃO -LINUX-
Dependências:
   curl;
   zlib;
   openssl;
   expat;
   libiconv;
INSTALAÇÃO -LINUX-
Fedora:
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel


Então:
$ yum install git-core



Baseados no Debian:
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext   libz-dev libssl-dev



Então:
$ apt-get install git
INSTALAÇÃO -MACOS-
Visite:
  http://code.google.com/p/git-osx-installer




MACPORT:
$ sudo port install git-core +svn +doc +bash_completion +gitweb
INSTALAÇÃO -WINDOWS-
Visite:
  http://msysgit.github.com




  Next, next, leia os termos de uso e finish. :]
NOTAS:
   Quase todas as operações são locais;
   Integridade;
      Checksum;
      SHA-1



    Um hash de SHA-1:
    24b9da6552252987aa493b52f8696cd6d3b00373
OS TRÊS ESTADOS:
   Consolidado(commited):
       Dados são ditos consolidados quando estão seguramente
        armazenados em sua base de dados local.
   Modificado(modified):
       Modificado trata de um arquivo que sofreu mudanças
        mas que ainda não foi consolidado na base de dados.
   Preparado(staged):
       Um arquivo é tido como preparado quando você marca
        um arquivo modificado em sua versão corrente para
        que ele faça parte do snapshot do próximo commit.
        (consolidação).
AS TRÊS SEÇÕES:
   Diretório git(git directory):
       É o local onde o Git armazena os metadados e o banco de
        objetos de seu projeto. Esta é a parte mais importante do
        Git, e é a parte copiada quando você clona um repositório
        de outro computador.


   Diretório de trabalho(working directory):
       É um único checkout de uma versão do projeto.


   Área de preparação (staging area):
       É área de preparação, é um simples arquivo, geralmente
        contido no seu diretório git, que armazena informações
        sobre o que irá em seu próximo commit.
AS TRÊS SEÇÕES:
WORKFLOW:
Workflow básico do git:

   Você modifica os arquivos no seu diretório de trabalho.

   Você seleciona os arquivos, adicionando snapshots
    deles para sua área de preparação.

   Você faz um commit, que leva os arquivos como eles
    estão na sua área de preparação e os armazena
    permanentemente no seu diretório git.
MÃO NA MASSA!
Inicializando um projeto:
   Do zero:
    $ mkdir wheezy
    $ cd wheezy




    $ git init
MÃO NA MASSA!
Inicializando um projeto:
   Clonando um repositório existente:
     Local:
    $ git clone <repo>
MÃO NA MASSA!
Inicializando um projeto:
   Clonando um repositório existente:
       Remoto:
         HTTP:




           SSH:
MÃO NA MASSA!
Diretório .git:
     .git/
MÃO NA MASSA!
Configurando:                  Informações:
   /etc/gitconfig
   ~/.gitconfig
   .git/config




  Identidade:
MÃO NA MASSA!
Ajuda:
   Informações sobre os comandos:
  $ git config --help
  $ git help config
DIVERSÃO!
Status dos arquivos.
 $ tree
 $ git status
DIVERSÃO!
Criando um arquivo:
 $ touch HelloWorld.java
 $ git status
DIVERSÃO!
Monitorando novos arquivos:
 $ git add HelloWorld.java
 $ git status
DIVERSÃO!
Modificando arquivos:
 $ nano HelloWorld.java




 Layout do programa nano.
DIVERSÃO!
Modificando arquivos:
 $ git status
DIVERSÃO!
Selecionando arquivos modificados:
 $ git add HelloWorld.java
 $ git status
DIVERSÃO!
Editando arquivos:




                     Visualizando as modificações:
DIVERSÃO!
Fazendo commits(arquivando):
 $ git commit -m “Mensagem”




   1 file changed, 6 insertions
   SHA-1 82814c4
   Msg: ‘Hello World’ na saída principal.
DIVERSÃO!
Visualizando commits(logs):
$ git log                     $ git help log
DIVERSÃO!
Modificando um commit:
 $ git commit –amend




 $ git commit -m “Novo commit”
DIVERSÃO!
Retirando arquivos selecionados:
 $ git reset HEAD HelloWorld




Desfazendo modificações:
 $ git checkout HelloWorld
DIVERSÃO!
Trabalhando com remotos:
     Adicionando um repositório remoto para um projeto
      existente.
 git remote add <url>




     Clonando um repositório:
  git clone <url>
DIVERSÃO!
Remoto:
 GitHub (github.com)
DIVERSÃO!
Exibindo seus remotos:
 $ git remote –v




 $ git remote show <remoto>
DIVERSÃO!
Recebendo dados dos remotos:
 $ git pull <remoto>
DIVERSÃO!
Visualizando os commits:
 $ git log
DIVERSÃO!
Enviando dados para os remotos:
$ git push <remoto>
DIVERSÃO!
Removendo um remoto:
 $ git remote rm <remoto>




Renomeando um remoto:
 $ git remote rename <remoto> <novoremoto>
VANTAGENS:
   Consistência:
       Nenhum repositório deve possuir mais dados que
        qualquer outro;
   Velocidade:
       Muito mais rápido que outros sistemas de controle de
        versão;
   Espaço:
       Reduz o tamanho local, assim como as
        transferências em operações de push/pull;
   Open-Source:
DESVANTAGENS:
   Maior massa de dados em operações
    push/pull do que em commits/updates;

   Documentação;
GUI:
Windows:
    Github (http://windows.github.com)

    Git Extension (http://code.google.com/p/gitextensions/)

    Git Cola (http://git-cola.github.io/)

    SmartGit
     (http://www.syntevo.com/smartgithg/index.html)
GUI:
Linux:
     Git Cola (http://git-cola.github.io/)

     SmartGit
      (http://www.syntevo.com/smartgithg/index.html)
GUI:
MacOS:
    Github (http://mac.github.com)

    Tower (http://www.git-tower.com/)

    Git box (http://www.gitboxapp.com/)

    SourceTree (http://www.sourcetreeapp.com/)

    GitX (http://gitx.laullon.com/)
GITHUB
REFERÊNCIAS:
   Site oficial do git
       http://git-scm.com/
   Livro Pro Git (Scott Chacon)




   Linux Org
       http://www.linfo.org/linus.html/
Obrigado!

Conhecendo o git.