Git Guia Prático Richard E. Silverman Novatec
Authorized Portuguese translation of the English edition of titled Git Pocket Guide, ISBN 9781449325862 2013 Richard Silverman. This translation is published and sold by permission of O'Reilly Media, Inc., the owner of all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra Git Pocket Guide, ISBN 9781449325862 2013 Richard Silverman. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra. Novatec Editora Ltda. [2013]. Editor: Rubens Prates Tradução: Acauan Fernandes Revisão técnica: Aurelio Jargas Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-379-6 Histórico de impressões: Novembro/2013 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 Fax: +55 11 2950-8869 E-mail: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec VC20131028
Sumário Prefácio...9 Capítulo 1 Compreendendo o Git... 16 Visão geral...16 O depósito de objetos... 21 IDs de objetos e SHA-1...26 Onde ficam os objetos...30 O grafo de commits... 31 Referências...32 Branches...33 O índice...36 Executando fusões...38 Push e pull...40 Capítulo 2 Iniciando... 46 Configuração básica...46 Criando um repositório vazio novo...52 Importando um projeto existente...54 Ignorando arquivos...56 Capítulo 3 Executando commits... 59 Alterando o índice...59 Executando um commit...64 Capítulo 4 Desfazendo e editando commits... 68 Alterando o último commit...69 Descartando o último commit...72
6 Git Guia Prático Desfazendo um commit...73 Editando uma série de commits...75 Capítulo 5 Branching... 79 O branch padrão, master...80 Criando um novo branch...80 Alternando branches...82 Excluindo um branch...84 Renomeando um branch...87 Capítulo 6 Monitorando outros repositórios... 88 Clonando um repositório...88 Branches locais, remotos e monitorados...93 Sincronização: push e pull...95 Controle de acesso... 103 Capítulo 7 Executando fusões... 104 Conflitos de fusão... 107 Detalhes sobre a fusão...113 Ferramentas de fusão...116 Ferramentas de fusão personalizadas...117 Estratégias de fusão...118 Por que octopus?... 120 Reutilizando decisões tomadas em fusões anteriores...121 Capítulo 8 Dando nomes aos commits... 122 Dando nome a commits individuais... 122 Dando nomes a conjuntos de commits... 130 Capítulo 9 Visualizando o histórico... 133 Formato do comando... 133 Formatos de saída... 134 Definindo os seus próprios formatos... 136 Limitando os commits que serão mostrados... 137 Expressões regulares... 139
Sumário 7 Reflog... 140 Decoration... 140 Estilo da data... 140 Listando arquivos alterados... 142 Mostrando e seguindo renomeações ou cópias... 144 Reescrevendo nomes e endereços: o mailmap... 145 Pesquisando alterações: o pickaxe...147 Mostrando as diferenças... 148 Comparando branches... 149 Mostrando observações... 152 Ordem dos commits... 152 Simplificação do histórico... 153 Comandos relacionados... 153 Capítulo 10 Editando o histórico... 155 Executando rebase... 155 Importando de um repositório para outro... 159 Cirurgia em commit: git replace... 164 Usando a força: git filter-branch... 167 Observações...171 Capítulo 11 Entendendo patches... 172 Aplicando diffs normais...174 Patches com informações de commit... 175 Capítulo 12 Acesso remoto... 177 SSH... 177 HTTP... 180 Armazenando seu nome de usuário... 180 Armazenando a sua senha...181 Referências... 182 Capítulo 13 Miscelânea... 183 git cherry-pick... 183 git notes... 184
8 Git Guia Prático git grep... 186 git rev-parse... 189 git clean... 189 git stash...191 git show... 193 git tag... 194 git diff... 196 git instaweb... 198 Git hooks... 198 Ferramentas visuais... 199 Submódulos...200 Capítulo 14 Como eu faço para?... 201 criar e usar um repositório central?...201 corrigir o último commit que executei?... 202 editar n commits anteriores?... 202 desfazer meus últimos n commits?... 202 reusar a mensagem de um commit já existente?...203 reaplicar um commit já existente a partir de outro branch?...203 listar arquivos com conflitos durante a fusão?...203 obter um resumo dos meus branches?...203 obter um resumo do estado do meu índice e da minha árvore de trabalho?...204 executar stage de todas as alterações correntes nos meus arquivos de trabalho?...204 mostrar as alterações nos meus arquivos de trabalho?...204 gravar e restaurar minha árvore de trabalho e alterações no índice?...205 adicionar um branch downstream sem executar checkout?...205 listar os arquivos de um determinado commit?...205 mostrar as alterações feitas por um commit?...205 completar os nomes de branch, tags e assim por diante, usando a tecla Tab?... 206 listar todos os remotos?...206 alterar a URL de um remoto?...206 remover branches de monitoramento remoto antigos?... 207 usando o git log:... 207