Controle de Versão com
        Git e Github
        
        
      Vinícius Aires Barros
        Idade: 21
        7° Período de Ciência da Computação UFT
        Desenvolvedor Web e Android
        GitHub: @viniciusaires7
      Herinson Rodrigues
          Idade: 24
          6° (6!) Período de Ciência da Computação
          Desenvolvedor Web
          GitHub: @herodrigues
        Mas afinal de contas o que é o Git?
          
            Git é um sistema de controle de versão distribuído e um sistema de gerenciamento de código fonte com ênfase em velocidade, integridade de dados e suporte para workflows não lineares distribuídos.
          
        Mas afinal de contas o que é o Git?
          
            Igualmente a vários outros sistemas de controle de versão distribuída, e diferente da maioria dos sistemas cliente-servidor, qualquer diretório Git é um repositório totalmente desenvolvido com um completo histórico de controle de versão independente de
            acesso à internet ou de um servidor central
          
        Mas afinal de contas o que é o Git?
          
            O Git é muito utilizado em diversas empresas de desenvolvimento e funciona muito bem na maioria dos projetos, independentemente do tamanho do projeto ou do seu tipo. Ou seja praticamente todos os projetos que você irá desenvolver você poderá usar o Git
            como ferramenta de controle de versão.
          
        Uma breve história sobre o GIT
          
            Git foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel do Linux em 2005
          
        Software Livre
          
            Assim como o Kernel do Linux, Git é um software livre distribuído sob a GNU GPLv2
          
        GUIs para Git
          SmartGIT (Multiplataforma)
          Serviços similares ao GIT
        
        
        
        
      Mas afinal de contas o que é o GitHub?
          
            GitHub é um serviço web de hospedagem compartilhada para projetos que usam o controle de versão Git. Ele oferece todos os tipos de controle distribuído de versão e funcionalidades de gereciamento de código-fonte (SCM) do Git assim como diversas outras
            funcionalidades.
          
        Mas afinal de contas o que é o GitHub?
          
            Ao contrário do Git, que é basicamente restrito à linha de comando, o Github oferece interface gráfica para web assim como para desktop e integração mobile. O Github também possui diversas funcionalidades de controle de acesso e colaboração tais como
            bug tracking, requisição de funcionalidades, gerencimento de tarefas e wikis.
          
        Mas afinal de contas o que é o GitHub?
          
            O Github oferece tanto planos privados como contas grátis que são geralmente utilizadas para hospedar projetos de software livre. Além disso, o Github oferece planos grátis para estudantes que possuem email institucional ativo. Em 2015, o Github informou
            ter mais de 9 milhões de usuários e mais de 21.1 milhões de repositórios, sendo assim o maior serviço de hospedagem de código-fonte no mundo!
          
        Uma Breve História sobre o GitHub
          
            O desenvolvimento da plataforma Github começou em 1° de outubro de 2007. O site foi lançado em abril de 2008 por Tom Preston-Werner, Chris Wanstrath, and PJ Hyett depois de ter ficado por alguns meses no ar em fase beta.
          
        Criadores do GitHub
          - Tom Preston Werner e Chris Wanstrath
- PJ Hyett e Scoth Chacon
Serviços similares ao GitHub
        
        
        
        
        
      Mas por que usar o Git e GitHub?
          - Utilizar em projetos individuais ou em grupo
- Fazer controle de versão de arquivos pessoais
- Controlar arquivos de exercícios feitos em sala de aula
- Empresas cada vez mais olham os perfis de seus candidatos no GitHub
Primeiros Passos
          Criando pasta do projeto
            
              $ mkdir primeiro_projeto
            
            Acessando diretório da pasta do projeto
            
              $ cd primeiro_projeto/
            
            Inicializando o GIT no diretório
            
              $ git init
            
          Adcionando o primeiro arquivo
          Criando arquivo index.html
            
              $ echo "Hello World" > index.html
            
            Verificando status dos arquivos no diretório do projeto
            
              $ git status
            
            Adcionando todos os arquivos ao index git
            
              $ git add * #git add .
            
            Criando o primeiro commit referente ao projeto
            
              $ git commit -m "primeiro commit hello world"
            
          Comandos básicos do GIT
          git init
                git status
                git clone
              git add
                git rm
                git commit
              git log
                git push
                git pull
              Comando git init
          git-init - Cria um repositório (dirtório) Git vazio ou inicializa um novo
          Possíveis comandos
          
            git init [-q | --quiet] [--bare] [--template=
            ] [--separate-git-dir
              ] [--shared[=
                ]] [directory]
          
          referência na documentação do git
        Comando git add
          git-add - Adciona arquivo(s) ao index
          Possíveis comandos
          
            git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p] [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--] [
            …]
          
          referência na documentação do git
        Comando git rm
          git-rm - Remove arquivos da árvore de trabalho e do index
          Possíveis comandos
          
            git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--]
            …
          
          referência na documentação do git
        Comando git commit
          git-commit - Gravar mudanças no repositório
          Possíveis comandos
          
            git commit [-a | --interactive | --patch] [-s] [-v] [-u
            ] [--amend] [--dry-run] [(-c | -C | --fixup | --squash)
              ] [-F
                 | -m
                  ] [--reset-author] [--allow-empty] [--allow-empty-message] [--no-verify] [-e] [--author=
                    ] [--date=
                      ] [--cleanup=
                        ] [--[no-]status] [-i | -o] [-S[
                          ]] [--] [
                            …]
          
          referência na documentação do git
        Comando git clone
          git-clone - Clona um repositório em um novo diretório
          Possíveis comandos
          
            git clone [--template=
            ] [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror] [-o
              ] [-b
                ] [-u
                  ] [--reference
                    ] [--dissociate] [--separate-git-dir
                      ] [--depth
                        ] [--[no-]single-branch] [--recursive | --recurse-submodules] [--]
                          
                            [
                            ]
          
          referência na documentação do git
        Comando git push
          git-push - Atualiza referências remotas do repositório git
          Possíveis comandos
          
            git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=
            ] [--repo=
              ] [-f | --force] [--prune] [-v | --verbose] [-u | --set-upstream] [--[no-]signed|--sign=(true|false|if-asked)] [--force-with-lease[=
                [:
                  ]]] [--no-verify] [
                     [
                      …]]
          
          referência na documentação do git
        Comando git pull
          git-pull - Atualiza repositório local com as atualizações do repositório remoto
          Possíveis comandos
          
            git pull [options] [
             [
              …]]
          
          referência na documentação do git
        Comandos Avançados do GIT
          git branch
                git checkout
                git merge
              git diff
                git remote
                git tag
              git rebase
                git reset
              Comando git branch
          git-branch - Lista, cria, ou deleta branches
          Possíveis comandos
          
            git branch [--color[=
            < 'when'>] | --no-color] [-r | -a] [--list] [-v [--abbrev=
              < 'length'> | --no-abbrev]] [--column[=
                < 'options'>] | --no-column] [(--merged | --no-merged | --contains) [
                  < 'commit'>]] [
                    < 'pattern'>…] git branch [--set-upstream | --track | --no-track] [-l] [-f]
                      < 'branchname'> [
                        < 'start-point'>] git branch (--set-upstream-to=
                          < 'upstream'> | -u
                            < 'upstream'>) [
                              < 'branchname'>] git branch --unset-upstream [
                                < 'branchname'>] git branch (-m | -M) [
                                  < 'oldbranch'>]
                                    < 'newbranch'>
                                      git branch (-d | -D) [-r]
                                      < 'branchname'>… git branch --edit-description [
                                        < 'branchname'>]
          
          referência na documentação do git
        Comando git checkout
          git-checkout - Alternar entre branch ou restaura arquivos da árvore de trabalho
          Possíveis comandos
          
            git checkout [-q] [-f] [-m] [
            < 'branch'>] git checkout [-q] [-f] [-m] --detach [
              < 'branch'>] git checkout [-q] [-f] [-m] [--detach]
                < 'commit'>
                  git checkout [-q] [-f] [-m] [[-b|-B|--orphan]
                  < 'new_branch'>] [
                    < 'start_point'>] git checkout [-f|--ours|--theirs|-m|--conflict=
                      < 'style'>] [
                        < 'tree-ish'>] [--]
                          < 'paths'>… git checkout [-p|--patch] [
                            < 'tree-ish'>] [--] [
                              < 'paths'>…]
          
          referência na documentação do git
        Comando git merge
          git-merge - Junta dois ou mais branch de desenvolvimento em conjunto
          Possíveis comandos
          
            git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit] [-s
            < 'strategy'>] [-X
              < 'strategy-option'>] [-S[
                < 'keyid'>]] [--[no-]rerere-autoupdate] [-m
                  < 'msg'>] [
                    < 'commit'>…] git merge
                      < 'msg'> HEAD
                        < 'commit'>… git merge --abort
          
          referência na documentação do git
        Comando git diff
          git-diff - Mostrar modificações entre arquivos, commit e árvore de trabalho etc.
          Possíveis comandos
          
            git diff [options] [
            < 'commit'>] [--] [
              < 'path'>…] git diff [options] --cached [
                < 'commit'>] [--] [
                  < 'path'>…] git diff [options]
                    < 'commit'>
                      < 'commit'> [--] [
                        < 'path'>…] git diff [options]
                          < 'blob'>
                            < 'blob'>
                              git diff [options] [--no-index] [--]
                              < 'path'>
                                < 'path'>
          
          referência na documentação do git
        Comando git remote
          git-remote - Gerencia um conjunto de repositórios rastreados
          Possíveis comandos
          
            git remote [-v | --verbose] git remote add [-t
            < 'branch'>] [-m
              < 'master'>] [-f] [--[no-]tags] [--mirror=
                < 'fetch'| 'push'>]
                  < 'name'>
                    < 'url'>
                      git remote rename
                      < 'old'>
                        < 'new'>
                          git remote remove
                          < 'name'>
          
          referência na documentação do git
        Comando git rebase
          git-rebase - Integra mudanças de um branch em outro: o merge e o rebase
          Possíveis comandos
          
            git rebase [-i | --interactive] [options] [--exec
            < 'cmd'>] [--onto
              < 'newbase'>] [
                < 'upstream'> [
                  < 'branch'>]] git rebase [-i | --interactive] [options] [--exec
                    < 'cmd'>] [--onto
                      < 'newbase'>] --root [
                        < 'branch'>] git rebase --continue | --skip | --abort | --edit-todo
          
          referência na documentação do git
        Comando git reset
          git-reset - Desfaz mudanças em um branch
          Possíveis comandos
          
            git reset [-q] [
            < 'tree-ish'>] [--]
              < 'paths'>... git reset (--patch | -p) [
                < 'tree-ish'>] [--] [
                  < 'paths'>...] git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [
                    < 'commit'>]
          
          referência na documentação do git
        Comando git tag
          git-tag - Cria, lista, exclui ou verifica um objeto tag assinado com GPG
          Possíveis comandos
          
            git tag [-a | -s | -u
            < 'keyid'>] [-f] [-m
              < 'msg'> | -F
                < 'file'>]
                  < 'tagname'> [
                    < 'commit'> |
                      < 'object'>] git tag -d
                        < 'tagname'>… git tag [-n[
                          < 'num'>]] -l [--contains
                            < 'commit'>] [--points-at
                              < 'object'>] [--column[=
                                < 'options'>] | --no-column] [--create-reflog] [
                                  < 'pattern'>…] git tag -v
                                    < 'tagname'>…
          
          referência na documentação do git
        Introdução a Branching
          
            Branch (Ramificação) é mais um dos recursos do git para um melhor controle sobre os commits feito no projeto.
          
        Criando o primeiro Branch
          Verificando status do projeto
            
              $ git status
            
            Listando todos os branch do projeto
            
              $ git branch
            
            Criando um novo branch
            
              $ git checkout -b "novo_branch"
            
          Outras operações com branch
          Mudando de um branch para outro (checkout)
            
              $ git checkout "branch"
            
            Deletando um branch
            
              $ git branch -d "branch"
            
          Merge de um branch
          Merge de um branch com outro
            
              $ git checkout "branch_destino"
            
            Deletando um branch
            
              $ git merge "branch_origem"
            
          Agradecimento
          Vc   
          CACCOMP - UFT
          Curso de Ciência da Computação - UFT
         
  
        Controle de Versão com
        Git e Github
        
        
        
        
          Criado por @viniciusaires7 / @herodrigues