-
1. Primeiros Passos
- 1.1 Sobre Controle de Versão
- 1.2 Uma Breve História do Git
- 1.3 O que é Git?
- 1.4 A Linha de Comando
- 1.5 Instalando o Git
- 1.6 Configuração inicial do Git
- 1.7 Obtendo Ajuda
- 1.8 Resumo
-
2. Fundamentos do Git
-
3. Ramificação (Branching) no Git
-
4. Git no Servidor
- 4.1 Os Protocolos
- 4.2 Colocando o Git em um Servidor
- 4.3 Gerando a sua Chave Pública SSH
- 4.4 Configurando o Servidor
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Opções de Hospedagem de Terceiros
- 4.10 Resumo
-
5. Git Distribuído
-
6. GitHub
-
7. Ferramentas do Git
- 7.1 Seleção de Revisão
- 7.2 Área de Stage Interativa
- 7.3 Fazendo Stash e Limpando
- 7.4 Assinando Seu Trabalho
- 7.5 Pesquisando (Searching)
- 7.6 Reescrevendo o Histórico
- 7.7 Reset Desmistificado
- 7.8 Merging Avançado
- 7.9 Rerere
- 7.10 Depurando com Git
- 7.11 Submódulos
- 7.12 Empacotando (Bundling)
- 7.13 Substituir (Replace)
- 7.14 Armazenamento de Credenciais
- 7.15 Resumo
-
8. Customizando o Git
- 8.1 Configuração do Git
- 8.2 Atributos do Git
- 8.3 Hooks do Git
- 8.4 Uma Política de Exemplo Imposta pelo Git
- 8.5 Resumo
-
9. Git e Outros Sistemas
- 9.1 Git como Cliente
- 9.2 Migrando para o Git
- 9.3 Resumo
-
10. Git Internals (Por Dentro do Git)
- 10.1 Encanamento e Porcelana (Plumbing and Porcelain)
- 10.2 Objetos do Git
- 10.3 Referências do Git
- 10.4 Arquivos de pacote (Packfiles)
- 10.5 Refspec
- 10.6 Protocolos de Transferência
- 10.7 Manutenção e Recuperação de Dados
- 10.8 Variáveis de Ambiente
- 10.9 Resumo
-
A1. Appendix A: O Git em Outros Ambientes
- A1.1 Interfaces Gráficas
- A1.2 Git no Visual Studio
- A1.3 Git no Visual Studio Code
- A1.4 Git no IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git no Sublime Text
- A1.6 Git no Bash
- A1.7 Git no Zsh
- A1.8 Git no PowerShell
- A1.9 Resumo
-
A2. Appendix B: Incorporando o Git nos seus Aplicativos
- A2.1 Linha de Comando do Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Appendix C: Comandos do Git
- A3.1 Configuração e Ajustes
- A3.2 Obtendo e Criando Projetos
- A3.3 Snapshots Básicos
- A3.4 Branches e Merges
- A3.5 Compartilhando e Atualizando Projetos
- A3.6 Inspeção e Comparação
- A3.7 Depuração
- A3.8 Patches
- A3.9 E-mail
- A3.10 Sistemas Externos
- A3.11 Administração
- A3.12 Comandos de Encanamento
2.1 Fundamentos do Git - Obtendo um Repositório Git
Se você puder ler apenas um capítulo para começar a usar o Git, é este. Este capítulo cobre todos os comandos básicos que você precisa para fazer a grande maioria das coisas que você passará seu tempo fazendo com o Git. Ao final do capítulo, você deverá ser capaz de configurar e inicializar um repositório, começar e parar de rastrear arquivos, além de preparar (stage) e fazer commit de alterações. Também mostraremos como configurar o Git para ignorar determinados arquivos e padrões de arquivo, como desfazer erros de maneira rápida e fácil, como navegar pelo histórico do seu projeto e visualizar alterações entre commits, e como enviar (push) e puxar (pull) de repositórios remotos.
Obtendo um Repositório Git
Você normalmente obtém um repositório Git de uma de duas maneiras:
-
Você pode pegar um diretório local que não esteja sob controle de versão, e transformá-lo em um repositório Git, ou
-
Você pode clonar um repositório Git existente de outro lugar.
Em ambos os casos, você acaba com um repositório Git em sua máquina local, pronto para o trabalho.
Inicializando um repositório em um diretório existente
Se você tem um diretório de projeto que não está atualmente sob controle de versão e deseja começar a controlá-lo com o Git, você primeiro precisa ir para o diretório desse projeto. Se você nunca fez isso, parece um pouco diferente dependendo de qual sistema você está executando:
para Linux:
$ cd /home/user/my_project
para macOS:
$ cd /Users/user/my_project
para Windows:
$ cd C:/Users/user/my_project
e digite:
$ git init
Isso cria um novo subdiretório chamado .git que contém todos os arquivos de repositório necessários — um esqueleto de repositório Git.
Neste ponto, nada em seu projeto é rastreado ainda.
Veja Git Internals (Por Dentro do Git) para mais informações sobre exatamente quais arquivos estão contidos no diretório .git que você acabou de criar.
Se você quiser começar a controlar a versão de arquivos existentes (em oposição a um diretório vazio), você provavelmente deve começar a rastrear esses arquivos e fazer um commit inicial.
Você pode realizar isso com alguns comandos git add que especificam os arquivos que você deseja rastrear, seguidos por um git commit:
$ git add *.c
$ git add LICENSE
$ git commit -m 'Initial project version'
Vamos analisar o que esses comandos fazem em apenas um minuto. Neste ponto, você tem um repositório Git com arquivos rastreados e um commit inicial.
Clonando um Repositório Existente
Se você quiser obter uma cópia de um repositório Git existente — por exemplo, um projeto para o qual você gostaria de contribuir — o comando de que você precisa é git clone.
Se você está familiarizado com outros VCSs como Subversion, notará que o comando é "clone" e não "checkout".
Essa é uma distinção importante — em vez de obter apenas uma cópia de trabalho, o Git recebe uma cópia completa de quase todos os dados que o servidor possui.
Toda versão de todo arquivo do histórico do projeto é baixada (pulled down) por padrão quando você executa git clone.
De fato, se o disco do seu servidor for corrompido, muitas vezes você pode usar quase qualquer um dos clones em qualquer cliente para restaurar o servidor ao estado em que estava quando foi clonado (você pode perder alguns hooks do lado do servidor e coisas do tipo, mas todos os dados versionados estariam lá — veja Colocando o Git em um Servidor para mais detalhes).
Você clona um repositório com git clone <url>.
Por exemplo, se você quiser clonar a biblioteca vinculável (linkable library) do Git chamada libgit2, pode fazer isso assim:
$ git clone https://github.com/libgit2/libgit2
Isso cria um diretório chamado libgit2, inicializa um diretório .git dentro dele, baixa todos os dados para aquele repositório e faz o checkout de uma cópia de trabalho da versão mais recente.
Se você entrar no novo diretório libgit2 que acabou de ser criado, verá os arquivos do projeto lá, prontos para serem trabalhados ou usados.
Se você quiser clonar o repositório em um diretório com um nome diferente de libgit2, pode especificar o novo nome do diretório como um argumento adicional:
$ git clone https://github.com/libgit2/libgit2 mylibgit
Esse comando faz a mesma coisa que o anterior, mas o diretório de destino é chamado mylibgit.
O Git possui vários protocolos de transferência diferentes que você pode usar.
O exemplo anterior usa o protocolo https://, mas você também pode ver git:// ou user@server:path/to/repo.git, que usa o protocolo de transferência SSH.
Colocando o Git em um Servidor apresentará todas as opções disponíveis que o servidor pode configurar para acessar seu repositório Git e os prós e contras de cada uma.