Introdução ao

Hugo Maia Vieira
Esta obra é licenciada sob uma licença
Creative Commons

@hugomaiavieira

novembro de 2013
¿O que é git?
Um sistema de controle de versão, ou seja,
é um sistema que registra as mudanças
feitas em um arquivo ou um conjunto de
arquivos ao longo do tempo

Permite que um grupo de pessoas trabalhem
nos mesmos documentos ao mesmo tempo
¿Como surgiu?

Em 2005, por Linus Torvalds, para gerenciar
o desenvolvimento do kernel do Linux
¿E quem está usando?
Sistemas centralizados

Ex. CVS e Subversion
Sistemas distribuídos

Ex. git e mercurial
Modelos de armazenamento

outros

git
Os três estados
Instalando
$ apt-get install git-core
Configurando
/etc/gitconfig || ~/.gitconfig || .git/config

Identidade
$ git config --global user.name "Hugo Maia Vieira"
$ git config --global user.email "hugomaiavieira@gmail.com"
Cores
$ git config --global color.ui auto
Configurando
Editor
$ git config --global core.editor vim

Alias
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.co checkout
$ git config --global alias.st status

Ferramenta de diff
Obtendo ajuda
$ git help <comando>
$ git <comando> --help
$ man git-<comando>
TAB TAB
Obtendo um repositório
Novo repositório
$ git init

Repositório existente
$ git clone git@github.com:hugomaiavieira/afterFormat.git
Gravando alteraçoes no repositório
Gravando alteraçoes no repositório
$ git status
$ git add
$ git add -A
.gitignore
# um comentário - isto é ignorado
# sem arquivos terminados em .a
*.a
# mas rastreie lib.a, mesmo que você tenha ignorado arquivos
# terminados em .a acima
!lib.a
# apenas ignore o arquivo TODO na raiz, não o subdiretório TODO
/TODO
# ignore todos os arquivos no diretório build/
Build/
# ignore doc/notes.txt mas, não ignore doc/server/arch.txt
doc/*.txt
Gravando alteraçoes no repositório
$ git diff
$ git commit
$ git commit -m 'alguma coisa'
$ git commit -am 'alguma coisa'
$ git rm foo.txt
$ git rm --cached foo.txt
Visualizando o histórico
$ git log

gitg
$ sudo apt-get install gitg
$ gitg
Desfazendo coisas
Modificando o útimo commit
$ git commit --amend
Tirando arquivos da área de seleção
$ git reset HEAD foo.txt
Desfazendo as modificações de um arquivo
$ git checkout -- foo.txt
Desfazendo todas as modificações
$ git checkout -- .
Ramificações
Ramificações
$ git checkout -b iss53
Ramificações
$ git commit -am 'C3'
Ramificações
$ git checkout -b 'hotfix'
$ git commit -am 'C4'
Ramificações
$ git checkout master
$ git merge hotfix
Ramificações
$ git checkout iss53
$ git commit -a -m 'C5'
Ramificações
$ git checkout master
$ git merge iss53
Resolvendo conflitos
Trabalhando com remotos
Adicionando um remoto
$ git remote add [nome-remoto] [url]
Pegando dados de um remoto
$ git fetch [nome-remoto]
$ git pull [nome-remoto] [branch]
Enviando dados para um remoto
$ git push [nome-remoto] [branch]
Serviços
https://github.com

https://gitlab.com

https://bitbucket.org
Referências
http://git-scm.com/book/pt-br

http://www.hugomaiavieira.com/search/label/Git

Introdução ao git