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