-
1. Começando
- 1.1 Sobre Controle de Versão
- 1.2 Uma Breve História do Git
- 1.3 O Básico do Git
- 1.4 A Linha de Comando
- 1.5 Instalando o Git
- 1.6 Configuração Inicial do Git
- 1.7 Pedindo Ajuda
- 1.8 Sumário
-
2. Fundamentos de Git
-
3. Git Branching
- 3.1 Branches in a Nutshell
- 3.2 Basic Branching and Merging
- 3.3 Branch Management
- 3.4 Branching Workflows
- 3.5 Remote Branches
- 3.6 Rebasing
- 3.7 Summary
-
4. Git on the Server
- 4.1 The Protocols
- 4.2 Getting Git on a Server
- 4.3 Generating Your SSH Public Key
- 4.4 Setting Up the Server
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Third Party Hosted Options
- 4.10 Summary
-
5. Distributed Git
- 5.1 Distributed Workflows
- 5.2 Contributing to a Project
- 5.3 Maintaining a Project
- 5.4 Summary
-
6. GitHub
- 6.1 Configurando uma conta
- 6.2 Contribuindo em um projeto
- 6.3 Maintaining a Project
- 6.4 Managing an organization
- 6.5 Scripting GitHub
- 6.6 Summary
-
7. Git Tools
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Summary
-
8. Customizing Git
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Summary
-
A1. Appendix A: Git in Other Environments
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in Powershell
- A1.7 Summary
-
A2. Appendix B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
2.1 Fundamentos de Git - Obtendo um Repositório Git
Se você pode ler apenas um capítulo antes de começar a usar o Git, este é ele. Este capítulo cobre cada comando básico que você precisa para fazer a maior parte das coisas com as quais eventualmente você vai se deparar durante seu uso do Git. No final deste capítulo, você será capaz de configurar e inicializar um repositório, iniciar e interromper o rastreamento de arquivos, usar a área de stage e realizar commits das alterações. Também mostraremos como configurar o Git para ignorar certos arquivos e padrões de arquivo, como desfazer erros de maneira rápida e fácil, como navegar no histórico do seu projeto e visualizar alterações entre commits e como fazer push e pull em repositórios remotos.
Obtendo um Repositório Git
Você pode obter um projeto Git utilizando duas formas principais. A primeira faz uso de um projeto ou diretório existente e o importa para o Git. A segunda faz um clone de um repositório Git existente a partir de outro servidor.
Inicializando um Repositório em um Diretório Existente
Para você começar a monitorar um projeto existente com Git, você deve ir para o diretório desse projeto. Se você nunca fez isso, use o comando a seguir, que terá uma pequena diferença dependendo do sistema em que está executando:
para Linux:
$ cd /home/user/your_repository
para Mac:
$ cd /Users/user/your_repository
para Windows:
$ cd /c/user/your_repository
depois digite:
$ git init
Isso cria um novo subdiretório chamado .git
que contém todos os arquivos necessários de seu repositório – um esqueleto de repositório Git.
Neste ponto, nada em seu projeto é monitorado ainda.
(Veja [ch10-git-internals] para mais informações sobre quais arquivos estão contidos no diretório .git
que foi criado.)
Se você quer começar a controlar o versionamento dos arquivos existentes (ao contrário de um diretório vazio), você provavelmente deve começar a monitorar esses arquivos e fazer um commit inicial.
Você pode fazer isso com alguns comandos git add
que especificam os arquivos que você quer monitorar, seguido de um git commit
:
$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'
Nós já veremos o que esses comandos fazem. Mas neste ponto você já tem um repositório Git com arquivos monitorados e um commit inicial.
Clonando um Repositório Existente
Caso você queira obter a cópia de um repositório Git existente – por exemplo, um projeto que você queira contribuir – o comando para isso é git clone
.
Se você estiver familiarizado com outros sistemas VCS, tal como Subversion, você vai notar que o comando é clone
e não checkout
.
Essa é uma diferença importante – em vez de receber apenas uma cópia para trabalho, o Git recebe uma cópia completa de praticamente todos os dados que o servidor possui.
Cada versão de cada arquivo no histórico do projeto é obtida por padrão quando você executa git clone
.
De fato, se o disco do servidor ficar corrompido, em geral você pode usar qualquer uma das cópias de qualquer um dos clientes para reverter o servidor ao estado em que estava quando foi clonado (talvez você perca algumas configurações do servidor, mas todos os dados versionados estarão lá — veja Getting Git on a Server para mais detalhes).
Você clona um repositório com git clone [url]
.
Por exemplo, caso você queria clonar a biblioteca Git Linkable chamada libgit2, você pode fazer da seguinte forma:
$ git clone https://github.com/libgit2/libgit2
Isso cria um diretório chamado libgit2
, inicializa um diretório .git
dentro dele, recebe todos os dados deste repositório e deixa disponível para trabalho a cópia da última versão.
Se você entrar no novo diretório libgit2
, você verá os arquivos do projeto nele, pronto para serem editados ou utilizados.
Caso você queira clonar o repositório em um diretório diferente de libgit2
, é possível especificar esse diretório utilizando a opção abaixo:
$ git clone https://github.com/libgit2/libgit2 mylibgit
Este comando faz exatamente a mesma coisa que o anterior, mas o diretório de destino será chamado mylibgit
.
O Git possui diversos protocolos de transferência que você pode utilizar.
O exemplo anterior usa o protocolo https://
, mas você também pode ver git://
ou user@server:path/to/repo.git
, que usam o protocolo de transferência SSH.
Em Getting Git on a Server é apresentado todas as opções disponíveis com as quais o servidor pode ser configurado para acessar o seu repositório Git, e os prós e contras de cada uma.