Controle de Versão com
Git e Github
(Conceitos Básicos)
Vinícius Aires Barros
Desenvolvedor Web e Android
GitHub: @viniciusaires
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
(Conceitos Básicos)
Criado por @viniciusaires / @herodrigues
rev 1.0.1 - 02/2017