Comandos básicos do Git

Transcrição

Comandos básicos do Git
Comandos básicos do Git | GustavoHenrique.net
http://blog.gustavohenrique.net/2011/03/comand...
GustavoHenrique.net
About Contact
Comandos básicos do Git
Git é um sistema de controle de versão distribuído, open source, rápido e e�ciente. Desenvolvido inicialmente por Linus
Torvalds, mesmo criador do kernel do Linux, começou a ganhar notariedade quando passou a ser utilizado como sistema
de versionamento padrão para o projeto do kernel. Em 2008, com o lançamento do github, uma espécie de rede social
para compartilhamento de códigos, o git deu um grande salto rumo a popularização.
Vou abordar de forma rápida e resumida alguns comandos. Informações mais detalhadas podem ser encontradas na
documentação do projeto ou vem vários tutoriais existentes pela web.
Primeiros Passos
Con�gurando informações sobre o autor dos commits:
git config --global user.name "Gustavo"
git config --global user.email "[email protected]"
É possível alterar essas informações no arquivo ~/.gitcon�g
Criando um repositório local:
cd meuprojeto
git init
Para ter certeza que o repositório foi criado:
git status
Áreas de Trabalho
O git possui 4 áreas de trabalho:
1. O diretório .git que é o repositório contendo todos os arquivos versionados;
2. Working Area que é um snapshot do .git dentro de um determinado momento no tempo;
3. Stage que é um local temporário que armazena a referência para arquivos a serem versionados antes de serem
commitados;
4. Stash que também é um local temporário que pode armazenar e esconder arquivos que estão no Stage.
Adicionando arquivos novos ou modi�cados no Stage:
git
git
git
git
add
add
add
add
arquivo.txt
*.py
. (para add todos os arquivos)
-i (para modo interativo. 1-5 ou 1,2,3,4 e -3 para retirar)
Removendo arquivos não versionados do Stage:
git rm --cached arquivo.txt
git clean -fd (remove todos arquivos e diretórios)
Removendo arquivos versionados e modi�cados do Stage:
git reset HEAD arquivo.txt
1 of 7
08/23/2014 09:38 PM
Comandos básicos do Git | GustavoHenrique.net
http://blog.gustavohenrique.net/2011/03/comand...
git reset HEAD (todos os arquivos)
Desfazendo modi�cações de arquivos versionados no Stage:
git checkout -- arquivo.txt
Trabalhando com o Stash:
git
git
git
git
git
git
git
git
stash (Move todos os arquivos do Stage para o Stash)
stash save "Mensagem" (Move todos os arquivos do Stage para o Stash e os identifica com uma mensagem)
stash list
stash apply (Recupera os arquivos do último Stash de volta para o Stage mantendo cópia no Stash)
stash apply <ID> (Recupera os arquivos do Stash identificado pelo ID obtido pelo git stash list. Ex.: stash@{0})
stash pop (Faz o mesmo que apply porém apaga os arquivos do Stash)
stash drop <ID> (Apaga completamente o Stash)
fsck --unreachable | grep commit (Recupera arquivos apagados do Stash)
Commits
Apenas arquivos no Stage podem ser commitados.
git commit -m "Mensagem"
git commit -a -m "Mensagem" (commita também os arquivos versionados mesmo nao estando no Stage)
Refazendo commit quando esquecer de adicionar um arquivo no Stage:
git add arquivo.txt
git commit -m "Mensagem" --amend
O amend é destrutivo e só deve ser utilizado antes do commit ter sido enviado ao servidor remoto.
Voltando commits anteriores:
git reset --hard HEAD~1 (volta ao último commit)
git reset --soft HEAD~1 (volta ao último commit e mantém os últimos arquivos no Stage)
git reset --hard XXXXXXXXXXX (Volta para o commit com a hash XXXXXXXXXXX)
Recuperando commit apagado pelo git reset:
git reflog (Para visualizar os hashs)
git merge <hash>
Logs
Visualizando logs:
git
git
git
git
git
git
git
git
git
log
log --stat (Mostra o que foi modificado em cada commit)
log --graph (Mostra gráfico do log)
log --pretty=oneline (Mostra os commits linha por linha)
log --pretty=format:"%an %ad %h %s" (Exibe o autor, data, sha1 abreviado e texto do commit)
log --since=30.minutes ou 1.hour ou 2.hours (Exibe commits dos últimos 30 minutos, 1h ou 2h)
log --since=10.hours --until=2.hours (Exibe commits entre as últimas 10h e últimas 2h)
log --before="2010-12-25" (Exibe commits antes do dia 25/12/2010)
reflog (Mostra commits apagados pelo git reset)
Branches
Cada branch deve ter uma única funcionalidade. É recomendado criar um novo branch a partir do master e aplicar os
merges nele para efeito de simulação.
git
git
git
git
git
git
git
git
git
2 of 7
branch (Lista os branches)
branch -a (Mostra também os branches do repositório remoto)
branch -d novobranch (Apaga o branch)
branch -D novobranch (Força a remoção do branch)
checkout -b novobranch (Cria um branch contendo os mesmos commits do branch de origem)
checkout -b novobranch origin/outrobranch (Cria novobranch a partir do outrobranch no repositório remoto)
checkout -b [branch, tag, sha1]
checkout -b <branch> v1.0 (Cria um branch a partir da tag v1.0)
checkout master (Retorna ao branch master)
08/23/2014 09:38 PM
Comandos básicos do Git | GustavoHenrique.net
http://blog.gustavohenrique.net/2011/03/comand...
git rebase master (Atualiza um branch com o que há de novo no master)
git merge novobranch (Faz um merge do que foi feito em novobranch)
git merge novobranch --squash (Permite definir uma nova mensagem em vez das mensagens de todos os commits do novobranch)
Con�itos
Quanto mais tempo demorar para atualizar um branch a partir do master (git rebase), maior será a chance de haver
con�itos depois.
O rebase é destrutivo, se estiver trabalhando em um servidor remoto deve usar o merge.
git rebase --skip (Perde o arquivo novo)
git rebase --abort (Cancela o rebase)
git rebase --continue (Para continuar após lidar com o conflito manualmente)
Repositórios
Clonando repositórios:
git
git
git
git
git
git
git
git
clone repo1 repo2 (Clona um repositório e add o repo1 como orign no repo2)
remote show origin (Origin é uma convenção para o primeiro remote)
push origin (Envia o commit local para o repositório remoto)
push origin outrobranch (O mesmo acima mas para um determinado branch)
remote add origin repo (Adiciona um repositório como remoto)
pull (Atualiza a partir do repositório remoto)
pull origin outrobranch (O mesmo acima mas a partir de um determinado branch)
remote rm origin (Remove o repositório remoto)
Trabalhando como repositórios remotos:
Antes de dar um git push, dar um git fecth e um git rebase para não criar con�itos para outros usuários.
git
git
git
git
git
git
git
init --bare (Cria um repositório sem área de trabalho)
fetch origin (Puxa novos commits do repositório remoto)
fetch remote <branch> (Puxa novos commits do repositório remoto para o branch)
push origin <branch> (Envia o que está no branch atual para o branch no repositório remoto)
push origin v1.0 (Envia a tag v1.0)
pull (Atualiza o repositório local a partir do remoto. Similar a usar "fecth" + "merge")
pull origin <branch> (Atualiza o branch local a partir do branch remoto)
Github
Criando seu próprio projeto:
Crie um projeto pelo site do github. Em seguida, na máquina local, crie um par de chaves pública e privada, copie e cole
no campo apropriado no github.
ssh-keygen -t rsa
Depois copiar o conteudo de ~/.ssh/id_rsa.pub e colar na página do github.
Fazendo um fork de um projeto:
Faça um fork de um repositório, um clone para sua máquina, altere o código, commit e no site clique no link “pull
request”. O dono do repositório original deve adicionar a URL do repositório fork com git remote add usuario
urlfork. Depois executar um git fecth para trazer os branches do fork. Usar git diff usuario/ para ver as
alterações. Para aceitar, git merge (resolver con�itos caso apareça), criar um novo commit e enviar com o git push. O
usuário que fez o fork deve executar o mesmo procedimentos para manter o fork sincronizado com o repositório
original.
Patches
Trabalhando com patches:
git format-patch <branch> --stdout > patch.diff (Cria um patch)
git am patch.diff (Aplica o patch)
Tags
3 of 7
08/23/2014 09:38 PM
Comandos básicos do Git | GustavoHenrique.net
http://blog.gustavohenrique.net/2011/03/comand...
Uma tag é utilizada para criar uma versão de lançamento.
git
git
git
git
tag v1.0 (Cria a tag v1.0)
push origin v1.0 (Envia a tag v1.0)
push --tags (Envia todas as tags)
checkout -b <branch> v1.0 (Cria um branch a partir da tag v1.0)
git-svn
Lidando com svn:
git
git
git
git
svn
svn
svn
svn
clone svn://repo (Clona um repositorio svn)
clone -r10:HEAD URL NOME (clone de um intervalo de revisões svn)
dcommit (Envia commit para o repositório svn)
fecth (Atualiza a partir do repositório svn)
Links
http://git-scm.com/
http://www.kernel.org/pub/software/scm/git/docs/
GIT, GITHUB
Pro�le
Sign in with Twitter Sign in with Facebook
or
Name
Email
Not published
Website
Comment
Post It
21 Replies
16 Comments
0 Tweets
0 Facebook
5 Pingbacks
Last reply was 1 month ago
gustavohenrique
View April 22, 2011
git cheatsheet:
http://www.ndpsoftware.com/git-cheatsheet.html
Reply
roberson
4 of 7
08/23/2014 09:38 PM
Comandos básicos do Git | GustavoHenrique.net
http://blog.gustavohenrique.net/2011/03/comand...
View October 6, 2011
Muito bom o post. Parabéns.
Reply
Paulo Coutinho
View October 26, 2011
Edita seu $HOME/.gitcon�g e coloca:
[alias]
st = status
ci = commit
[color]
ui = auto
branch = auto
di� = auto
interactive = auto
status = auto
Reply
Vinycius Maia
View February 27, 2012
Muito bom, abrange todo o necessário e + um pouco. As vezes me da um branco e preciso de uma referência objetiva como essa, favoritei.
Reply
gustavohenrique
View May 15, 2012
Git e suas magias:
http://gustavodutra.com/geek/git-e-suas-magias-alguns-comandos-uteis
Reply
Henrique
View July 1, 2012
Vlw Gustavo, esse post acaba de me salvar numa parada que eu stava fazendo aqui agora!
Reply
Acemir
View August 8, 2012
Post muito útil! Obrigado e Parabéns!
Reply
gustavohenrique
View October 17, 2012
git e suas magias alguns comandos uteis:
http://gustavodutra.com/geek/git-e-suas-magias-alguns-comandos-uteis
Reply
gustavohenrique
View February 22, 2013
A few git tips you didn’t know about:
http://mislav.uniqpath.com/2010/07/git-tips/
Reply
O Git salvando sua vida | anselmo barbosa – blog - Dicas de desenvolvimento de software, boas práticas, boas ferramentas e muita informação
View March 16, 2013
[...] http://blog.gustavohenrique.net/2011/03/comandos-basicos-do-git/ [...]
Reply
Demis Meneghetti
View April 3, 2013
5 of 7
08/23/2014 09:38 PM
Comandos básicos do Git | GustavoHenrique.net
http://blog.gustavohenrique.net/2011/03/comand...
Muitíssimo útil esse post!!! Ajudou pra cara**o! rs
Reply
Cleiton
View May 17, 2013
Excelente post cara! O git é fantastico mesmo, vi esse aqui que me ajuda muito tbm: http://blog.glaucocustodio.com/2013/03/06/git-nossode-cada-dia-git-cheatsheet/
Abraços!
Reply
AP – 15/08/2013 | Senac Artigos
View August 15, 2013
[...] http://blog.gustavohenrique.net/2011/03/comandos-basicos-do-git/ [...]
Reply
gustavohenrique
View 11 months ago
A Git Work�ow for Agile Teams:
http://reinh.com/blog/2009/03/02/a-git-work�ow-for-agile-teams.html
Reply
1 – Introdução a série de programação com Yii Framework
View 9 months ago
[…] Comandos básicos do git: http://blog.gustavohenrique.net/2011/03/comandos-basicos-do-git/ […]
Reply
Comandos básicos do Git | GustavoHenrique.net | Meus Favoritos
View 6 months ago
[…] viaComandos básicos do Git | GustavoHenrique.net. […]
Reply
gustavohenrique
View 6 months ago
https://ochronus.com/git-tips-from-the-trenches/
Reply
gustavohenrique
View 6 months ago
http://pypix.com/tools-and-tips/pro-git-work�ow/
Reply
Git comandos | Blog Ramon RDM
View 4 months ago
[…] http://blog.gustavohenrique.net/2011/03/comandos-basicos-do-git/ […]
Reply
Fábio Barbosa
View 3 months ago
Excelente!
Reply
gustavohenrique
View 1 month ago
Git tips from the trenches
http://goo.gl/Qupc8n
Reply
Recent Tweets
6 of 7
Recent Posts
Tags
08/23/2014 09:38 PM
Comandos básicos do Git | GustavoHenrique.net
baltaauto.lv/store_or.html?… 10
months ago
Search for icons from Font
Awesome, Glyphicons, and
Ionicons glyphsearch.com
#frontend #html5 #css 10
months ago
Pizza Pie Charts – creating
responsive pie charts for
any device goo.gl/FT8CLH
#javascript 10 months ago
Mais servidores #dns free
189.38.95.95 189.38.95.96
gigadns.com.br 10 months
ago
s/8.8.8.8/185.16.40.143/g
#dns opennicproject.org 10
months ago
Criando plugins para o
Jenkins – Parte 1
Con�gurando um servidor
LDAP no CentOS 6.2
Introdução ao padrão MVC
no Ext JS 4
Virtualização com KVM
Autenticação Facebook no
Grails
Grails com Sqlite3 no
Ubuntu 11.04
Deploy no tomcat usando
django-jython
Deploy múltiplas versões do
Django no Nginx com
VirtualEnv
Comandos básicos do Git
Introdução ao Apache
Wicket
http://blog.gustavohenrique.net/2011/03/comand...
admin
Django extjs
�rewall grails jquery KingHost
liberações
Search...
Linux manual
model modelform mod_wsgi
moeda brasileira mudanças mysql
nível de serviço oo PagSeguro pdf php
PIL pisa problemas
proxy
python qa qos real
relacionamento roteamento service
desk shell script sites tdd tipsforlinux
traducao ubicomp ubuntu urllib
virtualhost Webservices wikipedia xsol
__init__
Follow Me on Twitter
Powered by Twitter Tools
7 of 7
08/23/2014 09:38 PM