Controle de Versão com

Git e Github

(Conceitos Básicos)

Criado por @viniciusaires / @herodrigues
rev 1.0.1 - 02/2017

Licença

Licença Creative Commons
Esta apresentação está licenciada com uma Licença Creative Commons - Atribuição 4.0 Internacional.
Podem estar disponíveis autorizações adicionais às concedidas no âmbito desta licença em viniciusaires7/minicurso-controle-de-versao-com-git-github.
profile-vinicius

Vinícius Aires Barros

Desenvolvedor Web e Android
GitHub: @viniciusaires
profile-herinson

Herinson Rodrigues

Desenvolvedor Web
GitHub: @herodrigues

Mas afinal de contas o que é o Git?

git-logo

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

linus-torvalds

Git foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel do Linux em 2005

Software Livre

tux gnu

Assim como o Kernel do Linux, Git é um software livre distribuído sob a GNU GPLv2

GUIs para Git

SmartGIT (Multiplataforma)

GUIs para Git

GitHub Desktop (Windows e OSX)

GUIs para Git

Source Tree (Windows e OSX)

Serviços similares ao GIT

svn-logo

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!

Website GitHub

Acessem: https://github.com/

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

Como instalar o GIT?

GNU LINUX
$ sudo apt-get install git -y

OSX
$ brew install git

Windows
Baixar o instalador do GIT

Primeiros Passos

  1. Criando pasta do projeto
  2. $ mkdir primeiro_projeto
  3. Acessando diretório da pasta do projeto
  4. $ cd primeiro_projeto/
  5. Inicializando o GIT no diretório
  6. $ git init

Adcionando o primeiro arquivo

  1. Criando arquivo index.html
  2. $ echo "Hello World" > index.html
  3. Verificando status dos arquivos no diretório do projeto
  4. $ git status
  5. Adcionando todos os arquivos ao index git
  6. $ git add * #git add .
  7. Criando o primeiro commit referente ao projeto
  8. $ git commit -m "primeiro commit hello world"

Criando uma conta no Github

Primeiramente vamos acessar o site oficial do Github em https://www.github.com

Documentação/Livros

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 status

  • git-status - Exibe o status da árvore de trabalho

  • Possíveis comandos

    git status [ …​] [--] [ …​]

    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

    Comando git log

  • git-log - Mostra logs commit

  • Possíveis comandos

    git log [ ] [ ] [[\--] …​]

    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

    branching-workflow

    Branch (Ramificação) é mais um dos recursos do git para um melhor controle sobre os commits feito no projeto.

    Criando o primeiro Branch

    1. Verificando status do projeto
    2. $ git status
    3. Listando todos os branch do projeto
    4. $ git branch
    5. Criando um novo branch
    6. $ git checkout -b "novo_branch"

    Outras operações com branch

    1. Mudando de um branch para outro (checkout)
    2. $ git checkout "branch"
    3. Deletando um branch
    4. $ git branch -d "branch"

    Merge de um branch

    1. Merge de um branch com outro
    2. $ git checkout "branch_destino"
    3. Deletando um branch
    4. $ git merge "branch_origem"

    Extra

    Saiba mais

    Referências

    1. Git Documentation. Disponível em: https://git-scm.com/documentation. Acesso em 19 de outubro de 2015. Fonte: GIT DOCUMENTATION: https://git-scm.com/documentation
    2. Git Book. Disponível em: https://git-scm.com/book/en/v2. Acesso em 19 de outubro de 2015. Fonte: GIT BOOK: https://git-scm.com/book/en/v2

    Agradecimento

    you
  • Vc   
  • CACCOMP - UFT
  • Curso de Ciência da Computação - UFT
  • Realização


    Fim

    gangnam_octocat
    Fork me on GitHub