SlideShare uma empresa Scribd logo
Bismarck Gomes Souza Júnior
Março de 2014
bismarckjunior@outlook.com
Sistema de Controle de Versão
• Controle de histórico
• Trabalho em equipe
• Marcação e resgate de versões estáveis
• Ramificação do Projeto
bismarckjunior@outlook.com
SVN
Sistema de Controle de Versão Centralizado
• Pouca autonomia
Ações necessitam de acesso ao servidor.
• Trabalho privado limitado
Versiona apenas arquivos no repositório.
• Risco de perda de dados
Tudo em um único repositório.
bismarckjunior@outlook.com
Git
Sistema de Controle de Versão Distribuído
• Autonomia
Ações básicas “off-line”.
• Rapidez
Processos são locais.
• Trabalho privado
Trabalho local não afeta os demais.
• Confiabilidade
Todo repositório é um backup, ou seja,
uma cópia completa do repositório, in-
cluindo versões anteriores e histórico.
bismarckjunior@outlook.com
Sistema de Controle Convencional
Δ1
Δ1 Δ2
Δ1
Δ2
Versão 2 Versão 3 Versão 4
A
B
C
Versão 1
bismarckjunior@outlook.com
Sistema de Controle do Git
A
B
C
A1
Versão 2 Versão 3 Versão 4
B1 B2
C1
A2
C
A1
C1
B2
Versão 1
bismarckjunior@outlook.com
Snapshots
Versão 1 Versão 2 Versão 3 Versão 4
Cada versão é uma “foto” do diretório de trabalho e será
representado por um círculo azul denominado commit.
bismarckjunior@outlook.com
Início
Sistema de Controle de Versão
commit
bismarckjunior@outlook.com
Início Função 1 Função 2
Sistema de Controle de Versão
commit
bismarckjunior@outlook.com
Início Função 1 Função 2
Função 2*
Sistema de Controle de Versão
commit branch
bismarckjunior@outlook.com
commit branch merge
Sistema de Controle de Versão
Início Função 1 Função 2 Função 2+
Função 2*
Funções OK
bismarckjunior@outlook.com
Início
Servidor
PC
clone
Início
bismarckjunior@outlook.com
Início
Servidor
PC
Início Função 1 Função 2 Funções Ok
clone
bismarckjunior@outlook.com
Início Função 1 Função 2 Funções Ok
Servidor
PC
Início Função 1 Função 2 Funções Ok
push
clone
bismarckjunior@outlook.com
Início Função 1 Função 2 Funções Ok Classes Ok
Servidor
PC
Início Função 1 Função 2 Funções Ok
push
clone
bismarckjunior@outlook.com
Servidor
Início Função 1 Função 2 Funções Ok Classes Ok
Início Função 1 Função 2 Funções Ok
PC
Classes Ok
push pull
clone
bismarckjunior@outlook.com
Servidores Para Hospedagem
Comandos Básicos
bismarckjunior@outlook.com
Criando um Repositório
$ git init
Transforma a diretório atual em um repositório
git, criando o subdiretório “.git”.
.git
$ git init <dir>
Cria o diretório <dir> e transforma em um
repositório git.
.git
bismarckjunior@outlook.com
Clonando um Repositório
$ git clone <repo>
Clona o repositório <repo> para a máquina local.
$ git clone <repo> <dir>
Clona o repositório <repo> para o diretório <dir>.
$ git clone git@github.com:user/Project.git
$ git clone https://github.com/user/Project.git
bismarckjunior@outlook.com
Tipos de Estado de um Arquivo
untracked
unmodified
modifiedstaged
selecionado
inalterado
modificado
não rastreado
bismarckjunior@outlook.com
.gitignore
Arquivo que contém os arquivos que não serão visíveis pelo git.
Arquivo .gitignore (exemplo)
Thumbs.db #Arquivo específico
*.html #Arquivos que terminam com “.html”
!index.html #Exceção, esse arquivo será visível ao git
log/ #Diretório específico
**/tmp #Qualquer diretório nomeado de “tmp”
• Arquivos que já estavam sendo rastreados não são afetados.
bismarckjunior@outlook.com
Preparando Para Salvar Alterações
$ git add <arquivo|dir>
Adiciona as mudanças do arquivo <arquivo> ou
do diretório <dir> para o próximo commit. O
arquivo passa a ser rastreado.add
$ git rm --cached <arquivo>
Para de rastrear o arquivo <arquivo>.
$ git reset <arquivo>
Remove as mudanças do arquivo <arquivo>
para o próximo commit.
Stage Area
(Index)
bismarckjunior@outlook.com
Salvando Alterações
$ git commit
Realiza o commit e abre o editor para inserir
uma mensagem.add
commit
$ git commit –m “<msg>”
Realiza o commit, com a mensagem <msg>.
$ git commit –a
Adiciona as mudanças dos arquivos já rastreados
e realiza o commit. O editor será aberto.
bismarckjunior@outlook.com
Salvando Alterações
$ git commit –am <msg>
Adiciona as mudanças dos arquivos já rastreados
e realiza o commit com a mensagem <msg>.add
commit
$ git commit --amend –m <msg>
Substitui o último commit e altera a mensagem
para <msg>.
bismarckjunior@outlook.com
Commmit
bismarckjunior@outlook.com
Commmit
commit date
tree
parent
author
committer
message
1e439..
b2a30..
bismarck
bismarck
93c42..
bismarckjunior@outlook.com
Commmit
commit date
tree
parent
author
committer
message
1e439..
b2a30..
bismarck
bismarck
93c42..
bismarckjunior@outlook.com
Commmit
commit date
tree
parent
author
committer
message
1e439..
b2a30..
bismarck
bismarck
commit date
tree
parent
author
committer
message
dae84..
1602a..
bismarck
bismarck
b2a30.. 93c42..
bismarckjunior@outlook.com
Analisando os Arquivos na Área Transitória
$ git status
Lista os arquivos que estão e que não estão na
área transitória, e os arquivos que não estão
sendo rastreados.
$ git status -s
Lista os arquivos de uma forma simplificada.
bismarckjunior@outlook.com
Tagging
$ git tag
Lista as tags existentes.
$ git tag –l <tag>
Procura pela tag <tag>.
$ git tag –l ‘v.0.*’
bismarckjunior@outlook.com
Tagging
$ git tag <tag> [<commit>]
Cria a tag <tag> para o último commit ou para o
commit <commit>.
$ git tag –a <tag>
Cria a tag <tag> completa para o último commit
e abre o editor para inserir uma mensagem.
$ git tag –a <tag> -m <msg>
Cria a tag <tag> completa para o último commit
com a mensagem <msg>.
v.0.1.0
bismarckjunior@outlook.com
Versionamento
v[major].[minor].[patch]
[patch]: correção de bugs.
[minor]: incrementos de funcionalidades compatíveis
com versões anteriores.
[major]: incrementos de funcionalidades incompatíveis
com versões anteriores.
Versões teste: alpha (a), beta (b)
v.0.1.0
Ex: v0.1.9 < v0.1.10 < v0.2.0a < v0.2.0b < v0.2.0
bismarckjunior@outlook.com
Referência a Commit
<sha1>
Hash SHA-1 referente ao commit. Pode-se usar os primeiros
caracteres.
Ex: b230 = b230e84a4c90d2f11ba85404e5fba93ce0a...
<tag>
Tag referente ao commit.
Ex: v0.1.2
<branch>
Último commit do branch <branch>.
Ex: master
bismarckjunior@outlook.com
Referência a Commit
<commit>~<n>
O n-ésimo percussor do commit <commit>.
v0.1.2a
v0.1.2a~1v0.1.2a~5
bismarckjunior@outlook.com
Referência a Commit
<commit>^1 ou <commit>^ ou <commit>~1
O primeiro percussor do commit <commit>.
v0.1.2a^v0.1.2a^^^^^
v0.1.2a
bismarckjunior@outlook.com
Referência a Commit
<commit>^2
O segundo percussor do commit <commit>. Utilizado em
commits resultantes de um merge.
v0.1.2a^^1
v0.1.2a^^2
v0.1.2a
bismarckjunior@outlook.com
Analisando Commits
$ git show
Exibe o último commit.
$ git show <commit>
Exibe o commit referenciado por <commit>.
$ git show <commit>:<arquivo>
Exibe o arquivo <arquivo> no commit <commit>.
bismarckjunior@outlook.com
Analisando um Arquivo
$ git blame <arquivo>
Exibe quem modificou cada linha do arquivo
<arquivo>, incluindo data e commit.
$ git blame -L <n>,<m> <arquivo>
Exibe quem modificou as linhas de <n> a <m> do
arquivo <arquivo>, incluindo data e commit.
bismarckjunior@outlook.com
Diferença Entre Commits
$ git diff <commit>
Exibe a diferença nos arquivos entre o commit
<commit> e o diretório de trabalho.
$ git diff --cached <commit>
Exibe a diferença nos arquivos entre o commit
<commit> e a área transitória.
Branches
bismarckjunior@outlook.com
Criando Ramificações
$ git branch [-a]
Exibe os branches existentes. Na forma completa,
exibe também os branches remotos.
$ git checkout –b <branch>
Cria o branch <branch> e altera para ele.
$ git branch <branch> [<base>]
Cria o branch <branch> a partir do commit <base>.
bismarckjunior@outlook.com
Criando Ramificações
$ git add *
Adiciona os arquivos para o index (área transitória).
bismarckjunior@outlook.com
Criando Ramificações
$ git commit
master
Realiza um commit.
bismarckjunior@outlook.com
Criando Ramificações
$ git commit –a
master
Adiciona os arquivos para o index e realiza um commit.
bismarckjunior@outlook.com
Criando Ramificações
$ git checkout -b ramo
ramo
master
Cria o branch ramo e altera para ele, ou seja, os próximos
commits serão no branch ramo.
bismarckjunior@outlook.com
Criando Ramificações
$ git commit –a
ramo
master
Realiza um commit no branch ramo.
bismarckjunior@outlook.com
Alternando em Ramificações
$ git checkout <branch>
Altera para o branch <branch>.
$ git checkout -f <branch>
Altera para o branch <branch> “na força”, perdendo-se as
informações não “commitadas”.
bismarckjunior@outlook.com
Alternando em Ramificações
master
HEAD
HEAD: aponta para o branch atual.
bismarckjunior@outlook.com
Alternando em Ramificações
ramo
master
$ git branch ramo
HEAD
Cria o branch ramo.
bismarckjunior@outlook.com
Alternando em Ramificações
ramo
master
$ git commit -a
HEAD
Realiza um commit no branch master.
bismarckjunior@outlook.com
Alternando em Ramificações
ramo
master
HEAD
$ git checkout ramo
Alterna para o branch ramo.
bismarckjunior@outlook.com
Alternando em Ramificações
ramo
master
HEAD
$ git commit -a
Realiza um commit no branch ramo.
bismarckjunior@outlook.com
Alternando em Ramificações
master
$ git commit -a
ramo
HEAD
Realiza um commit no branch ramo.
bismarckjunior@outlook.com
Excluindo Ramificações
$ git branch -d <branch>
Exclui o branch <branch>. O branch já deve ter
sido mesclado.
$ git branch -D <branch>
Exclui o branch <branch> mesmo não tendo sido
mesclado.
ramo
bismarckjunior@outlook.com
Mesclando Commits
$ git merge <branch>
Mescla os commits do branch <branch> para o
branch atual.
$ git merge <branch> --no-ff
Mescla os commits do branch <branch> para o
branch atual sem fast-foward.
bismarckjunior@outlook.com
Mesclando Commits
master
ramo
HEAD
bismarckjunior@outlook.com
Mesclando Commits
master
ramo
$ git checkout master
HEAD
Alterna para o branch master.
bismarckjunior@outlook.com
Mesclando Commits
ramo
master
$ git merge ramo
HEAD
Realiza um merge no branch master a partir do branch
ramo.
bismarckjunior@outlook.com
Mesclando Commits com Fast-foward
master
ramo
HEAD
bismarckjunior@outlook.com
Mesclando Commits com Fast-foward
master
$ git checkout master
HEAD
ramo
Alterna para o branch master.
bismarckjunior@outlook.com
Mesclando Commits com Fast-foward
master
$ git merge ramo
HEAD
master
ramo
HEAD
Neste caso, não é necessário nenhum commit para realizar
a mesclagem. Ocorre apenas um avanço rápido (ff).
bismarckjunior@outlook.com
Mesclando Commits sem Fast-foward
master
HEAD
ramo
bismarckjunior@outlook.com
Mesclando Commits sem Fast-foward
master
$ git merge ramo --no-ff
HEAD
Realiza um merge com um commit obrigatoriamente.
Possibilita uma melhor visualização no histórico.
master
HEAD
ramo
bismarckjunior@outlook.com
Mesclando Commits
def fun(x):
print x
def fun(x):
print x
fun(3)
master
branch_1
bismarckjunior@outlook.com
Mesclando Commits
def fun(x):
print x
def fun(x):
print x
fun(3)
mastermaster
branch_1
def fun(x):
print x
fun(3)
bismarckjunior@outlook.com
Mesclando Commits
def fun(x):
print x+x
def fun(x):
print x
fun(3)
branch_2
branch_1
bismarckjunior@outlook.com
Mesclando Commits
def fun(x):
print x+x
def fun(x):
print x
fun(3)
branch_2branch_2
branch_1
def fun(x):
print x+x
fun(3)
bismarckjunior@outlook.com
Mesclando Commits
def fun(x):
print x+x
branch_2
branch_3
def fun(y):
print y+y
bismarckjunior@outlook.com
Mesclando Commits
def fun(x):
print x+x
branch_2branch_2
branch_3
<<<<<<< HEAD
def fun(x):
print x+x
=======
def fun(y):
print y+y
>>>>>>> branch_3
!
def fun(y):
print y+y
bismarckjunior@outlook.com
Resolvendo Conflitos
• Alterar o arquivo manualmente
• Utilizar uma interface gráfica
• kdiff3, tkdiff, meld, xxdiff, vimdiff, p4merge
Com o p4merge configurado*, basta fazer:
$ git mergetool
* Veja a seção Configurações
bismarckjunior@outlook.com$ git commit -a
bismarckjunior@outlook.com
Rebase
$ git rebase <base> [-i]
Replica os commits do branch <base> para o atual. Na forma
iterativa é possível escolher entre manter, omitir ou editar
um commit.
$ git rebase <base> [-i]
bismarckjunior@outlook.com
Rebase
$ git rebase <base> [-i]$ git rebase <base> [-i]
Replica os commits do branch <base> para o atual. Na forma
iterativa é possível escolher entre manter, omitir ou editar
um commit.
bismarckjunior@outlook.com
Rebase
$ git rebase <base> [-i]
Caso haja algum conflito:
$ git rebase <base> [-i]
$ git mergetool
$ git rebase --continue
Analisando o Log
bismarckjunior@outlook.com
Analisando o Log
$ git shortlog
Exibe a primeira linha dos commits que cada
autor enviou.
$ git shortlog -s
Exibe o número de commits que cada autor enviou.
$ git shortlog -n
Exibe, em ordem numérica, o número de commits
que cada autor enviou.
bismarckjunior@outlook.com
Analisando o Log
$ git log
Exibe o log de commits.
$ git log -<n>
Exibe os últimos <n> commits.
$ git log –-since==<date>
Exibe os commits desde a data <date>.
Ex: “3.weeks”, “yesterday”, “3.minutes”
bismarckjunior@outlook.com
Analisando o Log
$ git log --graph
Exibe o log em forma de gráfico.
$ git log --oneline
Exibe o log, um commit (abreviado) por linha.
$ git log –-all
Exibe o log de todas as tags, branches, ...
bismarckjunior@outlook.com
Analisando o Log
$ git log --decorate
Exibe o log destacando branch, tags, ...
$ gitk
Exibe o log em uma interface gráfica.
$ git log –-author=<autor>
Exibe os commits realizados pelo autor <autor>.
bismarckjunior@outlook.com
Analisando o Log
$ git log <arquivo>
Exibe o log de modificações do <arquivo>.
$ git log -- <arquivo>
Exibe o log de modificações do <arquivo>
mesmo se ele tiver sido excluído.
$ git log <intervalo_commits>
Exibe os commits no <intervalo_commits>.
bismarckjunior@outlook.com
Intervalo de Commits
<commit1>..<commit2>
Seleciona os commits que são alcançados pelo commit
<commit2>, mas não pelo commit <commit1>.
master
ramo
bismarckjunior@outlook.com
Intervalo de Commits
<commit1>..<commit2>
Seleciona os commits que são alcançados pelo commit
<commit2>, mas não pelo commit <commit1>.
master
ramo
master..ramo
bismarckjunior@outlook.com
Intervalo de Commits
<commit1>..<commit2>
Seleciona os commits que são alcançados pelo commit
<commit2>, mas não pelo commit <commit1>.
master
ramo
ramo..master
bismarckjunior@outlook.com
Intervalo de Commits
<commit1>...<commit2>
Seleciona os commits que são alcançados pelos commits
<commit1> ou <commit2>, mas não pelos dois ao mesmo
tempo.
master
ramo
bismarckjunior@outlook.com
Intervalo de Commits
<commit1>...<commit2>
Seleciona os commits que são alcançados pelos commits
<commit1> ou <commit2>, mas não pelos dois ao mesmo
tempo.
master
ramo
ramo...master
master...ramo
Desfazendo Ações
bismarckjunior@outlook.com
Recuperando Arquivos
$ git checkout [--] <arquivo>
Recupera o arquivo <arquivo> do último commit.
$ git checkout <commit> <arq>
Recupera o arquivo <arq> do commit <commit>.
$ git checkout <commit>
Recupera os arquivos do commit <commit>.
bismarckjunior@outlook.com
Revertendo Commits
$ git revert <commit>
Cria um novo commit no branch atual que desfaz o que foi
introduzido no commit <commit>.
• Consertar um bug introduzido por um commit.
• Não remove o commit <commit>
bismarckjunior@outlook.com
Revertendo Commits
def fun(x):
print x
def fun2(x):
print x+1
def fun3(x):
print x+x
def fun(x):
print x
def fun(x):
print x
def fun2(x):
print x+1
v.0.1 v.0.2 v.0.3
bismarckjunior@outlook.com
Revertendo Commits
v.0.1 v.0.2 v.0.3
$ git revert v.0.2
$ git mergetool
Conflitos aparecem!
!
bismarckjunior@outlook.com
Blame
bismarckjunior@outlook.com
Revertendo Commits
v.0.1 v.0.2
$ git commit –am “Fixed bug in fun2”
v.0.3
bismarckjunior@outlook.com
“Excluindo” Commits
$ git reset --soft <commit>
Altera apenas o HEAD para o commit <commit>. Não altera a
área transitória nem o diretório de trabalho.
branchbranch
bismarckjunior@outlook.com
“Excluindo” Commits
Substitui os commits por um único commit. O diretório
de trabalho não é alterado.
branch
$ git reset --soft <commit>
$ git commit
bismarckjunior@outlook.com
“Excluindo” Commits
$ git reset --hard <commit>
Altera a área transitória e o diretório de trabalho para o
commit <commit>.
branchbranch
O comando git reset é uma das poucas formas de se
perder informação utilizando o git, pois os commits
deixam de aparecer no git log.!
bismarckjunior@outlook.com
“Excluindo” Commits
$ git reset [--mixed] <commit>
Altera apenas a área transitória para o commit <commit>.
Não altera o diretório de trabalho.
É necessário um git add para selecionar os arquivos do
diretório que irão para o próximo commit, caso contrário
irá o arquivo da área transitória.
branchbranch
bismarckjunior@outlook.com
“Excluindo” Commits
branch
bismarckjunior@outlook.com
“Excluindo” Commits
branch
$ git reset <commit>
bismarckjunior@outlook.com
“Excluindo” Commits
Mantém os arquivos da área transitória, ou seja, do
commit <commit>.
$ git reset <commit>
$ git commit
branch
bismarckjunior@outlook.com
“Excluindo” Commits
Mantém os arquivos <arquivos> do diretório.
branch
$ git reset <commit>
$ git add <arquivos>
$ git commit
bismarckjunior@outlook.com
Resumo da Operação Reset
Reset HEAD Index Diretório
--soft Alterado - -
--mixed Alterado Alterado* -
--hard Alterado Alterado Alterado
* É possível modificar o index utilizando “git add”.
branch
bismarckjunior@outlook.com
Recuperando Commits
$ git reflog
Exibe o histórico de hashes do repositório local.
$ git reflog
$ git merge <commit>
Adiciona o commit <commit> ao branch atual.
bismarckjunior@outlook.com
Limpando o Diretório
$ git clean [-f]
Exclui os arquivos que não estão sendo rastreados.
É possível forçar a exclusão.
$ git clean -n
Exibe os arquivos não rastreados que serão
excluídos.
Repositórios Remotos
bismarckjunior@outlook.com
Trabalhando com Repositórios Remotos
$ git remote -v
Lista os repositórios remotos e suas URLs. O repositório
clonado é nomeado de origin.
$ git remote add <nome> <url>
Usa <nome> ao invés da url <url> para se referir ao
repositório remoto.
$ git remote add pendrive “E:/GitRepo”
bismarckjunior@outlook.com
Atualizando o Repositório Local
$ git fetch [<repo>]
Baixa todos os dados do repositório <repo>.
$ git fetch [<repo>] [<branch>]
Baixa todos os dados do branch <branch> do
repositório <repo>.
$ git pull [<repo>]
Atualiza todos os dados do repositório <repo>, ou
seja, realiza um fetch seguido de um merge.
bismarckjunior@outlook.com
Usando fetch
Servidor
PC
master
develop
master
bismarckjunior@outlook.com
Usando fetch
Servidor
PC
origin/develop
master
develop
origin/master
master
$ git fetch #Baixa os dados do servidor
fetch
bismarckjunior@outlook.com
Usando pull
Servidor
PC
master
develop
master
bismarckjunior@outlook.com
Usando pull
Servidor
PC
origin/develop
master
develop
origin/master
master
$ git pull #Atualiza o repositório local
pull
bismarckjunior@outlook.com
Excluindo no Repositório Remoto
$ git push <repo> :<branch>
Exclui o branch <branch> do repositório <repo>.
$ git push <repo> :<tag>
Exclui a tag <tag> do repositório <repo>.
bismarckjunior@outlook.com
Enviando Para o Repositório
$ git push [<repo>] [<branch>]
Envia o branch <branch> para o repositório <repo>.
Por padrão <repo> é origin e <branch> é o branch
atual, mas pode ser configurado*.
* Veja a seção Configurações
$ git push [<repo>] --all
Envia o todos os branches para o repositório <repo>.
bismarckjunior@outlook.com
Enviando Para o Repositório
$ git push [<repo>] --tags
Envia todas as tags para o repositório <repo>.
$ git push <repo> <tag>
Envia a tag <tag> para o repositório <repo>.
bismarckjunior@outlook.com
Exemplo de Aplicação
Servidor
PC
$ git pull #Atualiza o repositório local
pull
origin/master
master
master
bismarckjunior@outlook.com
Exemplo de Aplicação
Servidor
PC
origin/master
master
master
#Modifica o repositório remoto
bismarckjunior@outlook.com
Exemplo de Aplicação
Servidor
PC
origin/master
master
master
$ git commit –a #Altera o repositório local
bismarckjunior@outlook.com
Exemplo de Aplicação
Servidor
PC
master
$ git push #Tenta atualizar o servidor
master
origin/master
push
!
Repositório local
está desatualizado
bismarckjunior@outlook.com
Solução 1: fetch + rebase + push
Servidor
PC
master
master
origin/master
bismarckjunior@outlook.com
Solução 1: fetch + rebase + push
Servidor
PC
$ git fetch #Baixa os dados do servidor
master
origin/master
fetch
master
bismarckjunior@outlook.com
Solução 1: fetch + rebase + push
Servidor
PC
$ git rebase origin/master #Realiza o rebase
master
origin/master
master
bismarckjunior@outlook.com
Solução 1: fetch + rebase + push
Servidor
PC
$ git push #Envia para o servidor
push origin/master
master
master
bismarckjunior@outlook.com
Solução 2: pull + push
Servidor
PC
master
master
origin/master
bismarckjunior@outlook.com
Solução 2: pull + push
Servidor
PC
master
$ git pull #Atualiza o repositório local
master
origin/master
pull
bismarckjunior@outlook.com
Solução 2: pull + push
Servidor
PC
master
$ git push #Envia para o servidor
master
origin/master
push
bismarckjunior@outlook.com
Conflitos de Referência
Caso exista um branch, uma tag e/ou um repositório remoto
com o mesmo nome <nome>, para evitar conflitos utilize a
tabela abaixo.
Tipo Referência
Branch refs/heads/<nome>
Tag refs/tags/<nome>
Repositório refs/remotes/<nome>
$ git push origin refs/tags/issue13
Configurações Básicas
bismarckjunior@outlook.com
Configuração Inicial do Git
$ git config –-global user.name <nome>
Atribui <nome> ao nome do usuário.
$ git config –-global user.email <email>
Atribui <email> ao e-mail do usuário.
$ git config –-global core.editor <editor>
Atribui <editor> como editor padrão. Ex.: notepad, emacs ...
bismarckjunior@outlook.com
Configurando o p4merge
$ git config --global merge.tool p4merge
Atribui p4merge como ferramenta de mesclagem.
$ git config --global mergetool.p4merge.cmd
“p4merge.exe $BASE $LOCAL $REMOTE $MERGED”
Atribui o caminho e a forma de como executar o programa.
• Analogamente para diff e difftool.
bismarckjunior@outlook.com
Configuração do Push
$ git config --global push.default simple
Basicamente, envia apenas o branch atual, quando o branch
não é especificado.
$ git config --global push.default nothing
Não envia nada, quando o branch não é especificado.
Outra opções: current, upstream, matching
bismarckjunior@outlook.com
Configuração do Merge
$ git config --global merge.ff false
Desativa o fast-foward, ou seja, cria sempre cria um commit na
mesclagem.
*Cuidado: Quando o fast-foward está desativado, o comando
push (fetch +merge) também irá sempre criar um commit ao
atualizar um repositório.
bismarckjunior@outlook.com
Desconfigurando
$ git config --global --unset <key>
Desativa a chave <key>.
$ git config --global --unset merge.ff
$ git config --global --unset core.editor
bismarckjunior@outlook.com
Alias
$ git config --global alias.<abr> <cmd>
Substitui o comando <cmd> por <abr>.
$ git config --global alias.lol "log --graph
--decorate --oneline"
$ git lol --all
bismarckjunior@outlook.com
Fim de Linhas em Arquivos
$ git config --global core.autocrlf true
$ git config --global core.autocrlf input
Converte CRLF para LF durante um checkout. Configuração para
Linux e Mac.
Converte CRLF para LF e de LF para CRLF automaticamente.
Configuração para Windows.
Windows: CRLF (carriage-return and linefeed)
Linux: LF (linefeed)
Fluxo de Trabalho
bismarckjunior@outlook.com
Fluxo de Trabalho
master
bismarckjunior@outlook.com
Fluxo de Trabalho
develop
master
bismarckjunior@outlook.com
Fluxo de Trabalho
develop
feature
master
bismarckjunior@outlook.com
Fluxo de Trabalho
develop
feature
master
bismarckjunior@outlook.com
Fluxo de Trabalho
hotfix
develop
feature
master
bismarckjunior@outlook.com
Fluxo de Trabalho
hotfix
develop
feature
master
v.0.0.1
bismarckjunior@outlook.com
Fluxo de Trabalho
hotfix
realese
develop
feature
master
v.0.0.1
v.0.1.0a
bismarckjunior@outlook.com
Fluxo de Trabalho
hotfix
realese
develop
feature
master
v.0.0.1
v.0.1.0a
bismarckjunior@outlook.com
Fluxo de Trabalho
hotfix
realese
develop
feature
master
v.0.0.1 v.0.1.0
v.0.1.0a
bismarckjunior@outlook.com
Fluxo de Trabalho
hotfix
realese
develop
feature
master Versões estáveis.
Correção de bugs da versão estável.
Teste e correções de versões.
Desenvolvimento.
Implementação de funcionalidades.
bismarckjunior@outlook.com
Referências
• Pro Git (2009), Scott Chacon
• Git Tutorials, Atlassian.com
• Git Tutorial, Lars Vogel, vogella.com
• A successful Git branch model, nvie.com
bismarckjunior@outlook.com
Cursos
• http://try.github.io/
• http://gitreal.codeschool.com/
Dúvidas e Sugestões
bismarckjunior@outlook.com

Mais conteúdo relacionado

PPT
Git e GitHub - Conceitos Básicos
PDF
Git e GitHub: Versionamento de Código Fácil
PPTX
PDF
GIT Básico
PPTX
Sistemas de controle de versão
PDF
Orientação a Objetos em Python
PDF
Curso de Node JS Básico
PDF
Introdução APIs RESTful
Git e GitHub - Conceitos Básicos
Git e GitHub: Versionamento de Código Fácil
GIT Básico
Sistemas de controle de versão
Orientação a Objetos em Python
Curso de Node JS Básico
Introdução APIs RESTful

Mais procurados (20)

PDF
Git e GitHub
KEY
The everyday developer's guide to version control with Git
PDF
Introdução ao GitHub e Git
PDF
Git - An Introduction
PDF
Intro to Git and GitHub
PDF
Advanced Git Tutorial
PDF
Git 101: Git and GitHub for Beginners
PPTX
Workshop git para iniciantes
PDF
Starting with Git & GitHub
PDF
Git real slides
PDF
Git and github 101
PPTX
Introduction git
PDF
Learning git
PDF
Git and Github slides.pdf
PPTX
Git - Basic Crash Course
KEY
Introduction to Git
PDF
git and github
KEY
Introduction To Git
PDF
Git training v10
Git e GitHub
The everyday developer's guide to version control with Git
Introdução ao GitHub e Git
Git - An Introduction
Intro to Git and GitHub
Advanced Git Tutorial
Git 101: Git and GitHub for Beginners
Workshop git para iniciantes
Starting with Git & GitHub
Git real slides
Git and github 101
Introduction git
Learning git
Git and Github slides.pdf
Git - Basic Crash Course
Introduction to Git
git and github
Introduction To Git
Git training v10
Anúncio

Semelhante a Aprendendo Git (20)

PDF
GIT - Gerenciamento de Projeto e Versionamento Semântico
PDF
Minicurso GIT 2022 - SENAC
DOCX
Git flow no projeto
PDF
Minicurso GIT Completo (2022)
PDF
Controle de Versões com Git
PPTX
Introdução ao Git
PDF
Controle de versionamento com Git
PDF
Introdução ao Git
PDF
Intervalo técnico Git/SVN
PDF
Controle de versão com git
PDF
Git that like a boss: Grupo RBS
PPTX
Git - Fluxo do Versionamento adotado
KEY
Git para quem vem do SVN
PDF
Controle de Versão Distribuído com Git básico
PDF
Minicurso GIT PET Computação
PPTX
O Fantástico Mundo de Git
ODP
Git Rápido e Fácil
PDF
Git workshop
PDF
Introdução ao Git - Semac 2016
GIT - Gerenciamento de Projeto e Versionamento Semântico
Minicurso GIT 2022 - SENAC
Git flow no projeto
Minicurso GIT Completo (2022)
Controle de Versões com Git
Introdução ao Git
Controle de versionamento com Git
Introdução ao Git
Intervalo técnico Git/SVN
Controle de versão com git
Git that like a boss: Grupo RBS
Git - Fluxo do Versionamento adotado
Git para quem vem do SVN
Controle de Versão Distribuído com Git básico
Minicurso GIT PET Computação
O Fantástico Mundo de Git
Git Rápido e Fácil
Git workshop
Introdução ao Git - Semac 2016
Anúncio

Último (20)

PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
Émile Durkheim slide elaborado muito bom
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
PPTX
Aula sobre banco de dados com firebase db
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Aula sobre desenvolvimento de aplicativos
Émile Durkheim slide elaborado muito bom
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Processos na gestão de transportes, TM100 Col18
Curso de Java 9 - (Threads) Multitarefas.pptx
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Aula sobre banco de dados com firebase db

Aprendendo Git