O documento discute o sistema de controle de versão Git. Apresenta brevemente o que é Git, como instalá-lo e configurá-lo, e demonstra alguns comandos básicos como iniciar um repositório, adicionar arquivos, fazer commit, visualizar histórico e criar tags. Também explica sobre branches no Git e como criar e mesclar branches.
5. o que é git ?
instalando o git
comandos no git
repositórios no git
visão abrangente
ambiente configurado
trabalhando localmenteNOSSA AGENDA
HACKATHON
trabalhando em time
git that like a boss
repositórios no github
trabalhando online
6. Git é um sistema de controle de versão
distribuído livre e de código aberto, projetado
para lidar com tudo, de pequenos a grandes
projetos, com velocidade e eficiência.
http://git-scm.com/
9. Git pode ser usado online ou offline, é possível fazer de
tudo, branching, merging, commiting, mesmo que você
não esteja conectado a nenhuma rede.offLine
10. DISTRIBUIDO
Assim que você retorna a sua rede é possível enviar ou
baixar informações de outros repositórios remotos, seja
ele um repositório centralizado ou de qualquer outra
pessoa.
11. BRANCHING
O git fundamenta suas operações no sistema de
branches, produzindo um conjunto transparente de
funções e facilidades para a sua criação, mescla,
descarte, entre outros.
12. .
|-- .git
|-- Rakefile
|-- lib
| |-- pascals_triangle.rb
| |-- pretty_printed_array.rb
|-- pascals_triangle.gemspec
.
|-- .svn
|
|-- all-wcprops
|
|-- entries
|
|-- format
|
|-- prop-base
|
|-- props
|
|-- text-base
|
|
|-- Rakefile.svn-base
|.. Rakefile
|.. lib
|
|-- .svn
|
|
|-- all-wcprops
|
|
|-- entries
|
|
|-- format
ENXUTO
Diferentemente do SVN, o git possuí apenas um diretório
na raiz do projeto, sem necessidade ou possibilidade de
ser afetado negativamente com mudanças de nomes e
pastas.
14. Dependendo do sistema operacional utilizado em seu
ambiente de trabalho existirão uma ou mais localidades
ou implementações a serem feitas download para o
funcionamento do git.
DOWNLOAD
15. DOWNLOAD
Para o windows
Faça o download do instalador a
partir da pagina Google Code a baixo:
http://msysgit.github.io/
1. Acessar http://msysgit.github.io;
2. Selecionar a opção
Downloads;
3. Selecionar a última versão
disponível;
4. Selecionar novamente
a versão previamente
escolhida para começar o
download.
16. DOWNLOAD
Para o linux
Você pode realizar o download e
instalação por gerenciadores de
pacotes como yum e apt-get, ou
instalar através do código fonte
baixado de:
http://git-scm.com/download
1. Acessar http://git-scm.com/download;
2. Escolha a opção para download Linux;
3. Escolha a opção indicada
para a sua distribuição.
17. DOWNLOAD
Para o macOSX
Você pode realizar o download e
instalação por gerenciadores de
pacotes como homebrew, fink e
macports; assim como pode baixar o
instalador dmg diretamente de:
http://code.google.com/p/git-osx-
installer
1. Acessar http://code.google.com/p/git-osx-
installer/;
2. Selecione a aba Dowloads no topo da
página;
3. Selecione a versão
mais atual compatível a
sua versão do macosx;
4. Selecionar
novamente a
versão previamente
escolhida para
começar o
download.
18. Instalando o Git no Windows é muito fácil. O projeto
msysGit tem um dos procedimentos de instalação mais
fácil.
WINDOWS
20. WINDOWS
Select Components
Marque a opção Simple context menu.
Feito isso, avance para próxima tela
Habilitando está opção, o Git Bash e o Git
GUI serão incorporados ao menu de
contexto do Windows, possibilitando
executar o comando “Git Bash Here” dentro
um diretório qualquer
25. Existem algumas maneiras de instalar o git no macosx,
as principais envolvem gerenciadores de pacotes como
HomeBrew, MacPorts ou Fink.
MACOSX
26. MACOSX
Instalando com Brew
Tendo o brew instalado você só precisa
fazer:
➜ ~ brew install git
Se você ainda não usa homebrew para
gerenciar pacotes no Mac OS, então eu
recomendo instalá-lo.
27. MACOSX
Onde foi instalado
Depois de instalado você deve conseguir
ver onde o mesmo foi instalado, rodando
o comando:
➜ ~ which git
/usr/bin/git
28. MACOSX
Qual versão instalada
Após instalado é possível conferir a
qualquer momento a versão do git.
➜ ~ git --version
git version 1.7.12.4 (Apple
Git-37)
29. Para trabalhar de forma correta com o git o segundo
grande passo é realizar as configurações.
GITCONFIG
30. GIT CONFIG
Adicionando config
Caso seu usuário e email não estejam
configurados, faça-o com o comando:
Na primeira vez quando não configurado o --
list --global não possuí o .gitconfig na pasta
do usuário.
➜ ~ git config --global
user.name "Nome completo"
➜ ~ git config --global
user.email "Endereço de
Email"
31. COMaNDOS NO GIT
git that like a boss
novo projeto
log
tag
status
comitando
adicionando
33. ├──
HEAD
├──
branches
├──
config
├──
description
├──
hooks
│ ├──
applypatch-msg.sample
│ ├──
commit-msg.sample
│ ├──
post-update.sample
│ ├──
pre-applypatch.sample
│ ├──
pre-commit.sample
│ ├──
pre-rebase.sample
│ ├──
prepare-commit-msg.sample
│ └──
update.sample
├──
info
│ └──
exclude
├──
objects
│ ├──
info
│ └──
pack
└──
refs
├──
heads
└──
tags
Para criar um repositório de um diretório de arquivos
existente, você pode simplesmente executar git init no
diretório
NOVOREPOSITÓRIO
34. NOVO REPOSITÓRIO
Os arquivos a versionar
Por exemplo, digamos que temos um
diretório com nosso arquivo nele, como:
➜ ~ mkdir likeaboss
➜ ~ cd likeaboss
➜ ~ touch README.md
➜ likeaboss ls
README.md
35. NOVO REPOSITÓRIO
Criando o repositório
Para iniciar o controle de versão disso
com Git, podemos simplesmente
executar git init, como:
➜ ~ git init
Initialized empty Git
repository in /Users/
helmed/rbsdev/.git/
37. Em muitos momentos os arquivos sobe o versionamento
estarão no seu computador mas em um determinado
estado, qual será ele?
STATUS
Untracked
tracked
38. STATUS
Conferindo o Estado
dos arquivos
Em muitos momentos os arquivos
sobe o versionamento estarão no
seu computador mas em um
determinado estado. Para descobrir
em que estado podemos usar o
comando status, veja:
➜ gitlikeaboss git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files
and use "git add" to track)
➜ gitlikeaboss git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to
include in what will be committed)
#
# README.md
nothing added to commit but
untracked files present (use "git
add" to track)
40. Quando estamos trabalhando com arquivos sobe o
versionamento do git, temos que ter sempre em mente o
ciclo de vida dos mesmos passando de não rastreados
para rastreados.
ADICIONANDO
Untracked
tracked
41. ADICIONANDO
Rastreando
Arquivos
Para iniciar o rastreamento de um
novo arquivo, você deve usar o
comando add. Veja:
➜ gitlikeaboss git add
README.md
➜ gitlikeaboss git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..."
to unstage)
#
# new file: README.md
42. ADICIONANDO
Várias formas de adição
Para adicionar arquivos em um commit,
é necessário executar um comando que
insira ele no commit:
➜ gitlikeaboss git add .
➜ gitlikeaboss git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..."
to unstage)
#
# new file: README.md
➜ gitlikeaboss touch
a.txt
➜ gitlikeaboss git add
*.txt
➜ gitlikeaboss git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..."
to unstage)
#
# new file: a.txt
#
# Untracked files:
# (use "git add <file>..." to
include in what will be committed)
#
# README.md
43. Para confirmar e armazenar as alterações realizadas
perante o histórico do git é necessário realizar o commit.
COMITANDO
Untracked
tracked
staged
44. COMITANDO
Descrevendo o commit
Após a adição dos arquivos no commit
é possível executar o commit
➜ likeaboss git commit
-m "Descrição do commit"
[master (root-commit)
edc6bb2] Descrição do commit
0 files changed
create mode 100644 README.md
45. Depois de vários commits, você provavelmente irá querer
ver o que aconteceu.
LOG
Untracked
tracked
staged
commit
f3d4346e4a7b073d5b03a8020ab1c1061292a
Author:
Helio
Medeiros
<helio.cabralmedeiros@gmail.com>
Date:
Sun
Oct
20
12:28:37
2013
-0200
Feito
46. LOG
O Histórico de commits
Após um commit mais um registro é
criado no histórico. Por padrão, sem
argumentos, git log lista os commits
feitos naquele repositório em ordem
cronológica reversa.
➜ likeaboss git log
commit
e1cf3d4346e4a7b073d5b03a8020a
b1c1061292a
Author: Helio Medeiros
<helio.cabralmedeiros@gmail.c
om>
Date: Sun Oct 20 12:28:37
2013 -0200
Feito
47. O Git possui a funcionalidade de salvar pontos
específicos na história de um repositório,
TAG
1.0
2.0
48. TAG
Criando TAGS
Normalmente se segue o padrão v0.0.0
para a criação de tags, pois facilita a
procura de tags específicas que são
feitas de forma decrescente e alfabética.
➜ likeaboss git tag -a
v1.0 -m "Introducao"
49. TAG
Listando as TAGS
Para visualizar as tags existentes no
repositório, basta executar o comando
➜ likeaboss git tag
v1.0
50. TAG
Alternando entre tags
Em muitos casos desejamos alternar
entre versões para entender desde que
oque foi feito até recuperar uma versão
estável para promoção de bugs. Para
isso:
➜ likeaboss git tag
checkout v1.0
51. BRANCHING NO GIT
git that like a boss
o que são branchs
conflitos
removendo
novo branch
52. Um branch no Git é simplesmente um ponteiro do projeto,
que contém todos os arquivos. O branch padrão no Git é
o master, a partir deste surgem diversas ramificações,
isto vários branches. É um mundo paralelo.
BRANCH
Master
53. NOVO BRANCH
Branch Based
Em alguns momentos desejamos
desenvolver novas funcionalidades, sejam
para testar hipóteses ou apenas
memorizar uma possível ideia. Nestas
horas o branch nos ajuda.
➜ likeaboss git
branch nova-
funcionalidade
➜ likeaboss git
branch
* master
nova-funcionalidade
Um novo branch
➜ likeaboss git checkout
nova-funcionalidade
Switched to branch 'nova-
funcionalidade'
Selecionando o branch
54. Diferença
Master intocado
Perceba que se você fizer checkout
neste momento voltando para o branch
master, não deverá estar presente
nenhum resquício das alterações que
acabamos de executar dentro do branch
nova-funcionalidade:
➜ gitlikeboss ls
.gitignore
1/1a.txt
README
mnb.sh
oba.sh
rbsdev.sh
senha.sh
➜ gitlikeboss git
checkout master
Switched to branch 'master'
➜ gitlikeboss git ls-
files
.gitignore
1/1a.txt
README
oba.sh
rbsdev.sh
senha.sh
55. Alterando
Fazendo nossas
alterações
Agora é hora de fazermos as alterações
que desejamos.
➜ gitlikeaboss touch
CHANGE.md
➜ gitlikeaboss git add .
➜ gitlikeaboss git commit
-m “Novo arquivo”
56. visualizando
Visualizando as
diferenças
Perceba que se você fizer novamente
checkout, voltando para o branch master,
havera alterações que acabamos de
executar dentro do branch nova-
funcionalidade:
➜ gitlikeboss ls
README.md
CHANGE.md
➜ gitlikeboss git
checkout master
Switched to branch 'master'
➜ gitlikeboss ls
README.md
CHANGE.md
57. merge
Mesclando as alterações
Após a conclusão de uma tarefa é
possível integrá-la a linha de
desenvolvimento central. Para fazer isso,
você fará o merge do seu branch. Tudo
que você tem a fazer é executar o
checkout do branch para onde deseja
fazer o merge e então rodar o comando
git merge.
➜ gitlikeboss git
checkout master
Switched to branch 'master'
➜ gitlikeboss git merge
nova-funcionalidade
➜ gitlikeboss ls
README.md
CHANGE.md
58. removendo
Removendo
Após a conclusão do desenvolvimento de
uma nova funcionalidade e sua integração
ao master é interessante a remoção dos
branches, mantendo o ambiente limpo.
➜ gitlikeboss git branch
master
* nova-funcionalidade
➜ gitlikeboss git branch
--delete nova-
funcionalidade
error: Cannot delete the branch 'nova-
funcionalidade' which you are currently
on.
➜ gitlikeboss git
checkout
master
Switched to branch 'master'
➜ gitlikeboss git branch
--delete nova-
funcionalidade
Deleted branch teste (was 27478a1).
59. COnflitos
Merge com conflitos
Em alguns momentos o git não
conseguirá apresentar uma solução para
os conflitos gerados entre as várias
versões. Os conflitos podem acontecer
durante os merges e commits. Sempre
que um conflito acontece a ação
executada fica incompleta até que os
mesmos estejam resolvidos.
➜ gitlikeboss git merge
novo-conflito
Auto-merging arquivo.txt
CONFLICT (content): Merge conflict
in README.md
Automatic merge failed; fix
conflicts and then commit the
result.
➜ gitlikeboss git commit
-m “Conflito resolvido”
60. Obrigado!
Fontes:
Pro Git - Scott Chacon
http://try.github.io
http://nathanj.github.io
http://gitready.com/
Imagens:
http://git-scm.com/
@evandroeisinger
@helmedeiros
@rssilva