Setting up a repository

Como criar um repositório

Este tutorial fornece uma visão geral de como configurar um repositório (repo) no controle de versão do Git. Esse recurso vai orientá-lo na inicialização de um repositório do Git para um projeto novo ou já existente. Abaixo, estão incluídos exemplos de fluxo de trabalho de repositórios criados localmente e também clonados de repositórios remotos. Este guia pressupõe uma familiaridade básica com uma interface de linha de comando.

Os pontos de alto nível que serão abordados por este guia são:

  • Como inicializar um novo repositório do Git
  • Como clonar um repositório já existente do Git
  • Como confirmar uma versão modificada de um arquivo para o repositório
  • Como configurar um repositório do Git para colaboração remota
  • Comandos comuns de controle de versão do Git

No final deste módulo, você deve ser capaz de criar um repositório do Git, usar comandos comuns do Git, confirmar um arquivo modificado, ver o histórico do seu projeto e configurar uma conexão com um serviço de hospedagem do Git (Bitbucket).

O que é um repositório Git?

Um repositório do Git é um armazenamento virtual do projeto. Ele permite salvar versões do seu código, que você pode acessar quando necessário. 

Inicializando um novo repositório: git init

Para criar um novo repositório, você vai usar o comando git init. git init é um comando único usado durante a configuração inicial de um novo repositório. A execução deste comando vai criar um novo subdiretório .git no diretório de trabalho atual. Isso também vai criar uma nova ramificação mestre. 

Controlando a versão de um projeto existente com um novo repositório git

Este exemplo pressupõe que você já tenha uma pasta de projeto existente na qual gostaria de criar um repositório. Primeiro, você vai cd na pasta de projeto raiz e, em seguida, executar o comando git init.

cd /path/to/your/existing/code
git init

Indicar git init para um diretório de projeto existente vai executar a mesma configuração de inicialização mencionada acima, mas com escopo para o diretório desse projeto.

git init <diretório do projeto>

Visite a página git init para um recurso mais detalhado em git init.

Clonando um repositório existente: git clone

Se um projeto já tiver sido configurado em um repositório central, o comando de clonagem será a maneira mais comum para os usuários obterem um clone de desenvolvimento local. Como git init, a clonagem geralmente é uma operação única. Depois que um desenvolvedor obtém uma cópia de trabalho, todas as operações de controle de versão são gerenciadas por meio do repositório local.

git clone <repo url>

git clone é usado para criar uma cópia ou clone de repositórios remotos. Você passa git clone para um URL de repositório. O Git oferece suporte para alguns protocolos de rede diferentes e formatos de URL correspondentes. Neste exemplo, vamos usar o protocolo Git SSH. URLs Git SSH seguem um modelo de: git@HOSTNAME:USERNAME/REPONAME.git

Um exemplo de URL Git SSH seria: git@bitbucket.org:rhyolight/javascript-data-store.git, em que os valores de modelo são combinados:

  • HOSTNAME: bitbucket.org
  • USERNAME: rhyolight
  • REPONAME: javascript-data-store

Quando executada, a versão mais recente dos arquivos de repositório remoto na ramificação mestre será enviada e adicionada a uma nova pasta. A nova pasta será nomeada após o REPONAME neste caso javascript-data-store. A pasta vai conter o histórico completo do repositório remoto e uma ramificação mestre recém-criada.

Para obter mais documentos sobre o uso de git clone e os formatos suportados de URL do Git, visite a Página git clone.

Salvando alterações no repositório: git add e git commit

Agora que tem um repositório clonado ou inicializado, você pode confirmar as alterações de versão de arquivo nele. O exemplo a seguir pressupõe que você configurou um projeto em /path/to/project. As etapas seguidas neste exemplo são:

  • Alterar diretórios para /path/to/project
  • Criar um novo arquivo CommitTest.txt com conteúdo ~"test content for git tutorial"~
  • git add CommitTest.txt para a área de staging do repositório
  • Criar uma nova confirmação com uma mensagem descrevendo o trabalho que foi realizado na confirmação
cd /path/to/project
echo "test content for git tutorial" >> CommitTest.txt
git add CommitTest.txt
git commit -m "added CommitTest.txt to the repo"

Depois de executar esse exemplo, seu repositório terá CommitTest.txt adicionado ao histórico e rastreará atualizações futuras do arquivo.

Este exemplo introduziu dois comandos git adicionais: add e commit. Este foi um exemplo muito limitado, mas ambos são abordados de forma mais detalhada nas páginas git add e git commit. Outro caso de uso comum para git add é a opção --all. Executar git add --all pegará todos os arquivos alterados e não rastreados no repositório, adicionará esses arquivos ao repositório e atualizará a árvore de trabalho do repositório.

Colaboração de repositório para repositório: git push

É importante entender que a ideia do Git de uma “cópia ativa” é muito diferente da cópia ativa obtida ao conferir o código fonte de um repositório SVN. Diferente do SVN, o Git não faz distinção entre as cópias ativas e o repositório central — eles são todos repositórios do Git verdadeiros.

Isso torna a colaboração com o Git fundamentalmente diferente da colaboração com o SVN. Enquanto o SVN depende da relação entre o repositório central e a cópia ativa, o modelo de colaboração do Git é baseado na interação de repositório para repositório. Em vez de verificar uma cópia ativa no repositório central do SVN, você envia ou puxa confirmações de um repositório para outro.

Claro que nada impede que você dê um significado especial a determinados repositórios do Git. Por exemplo, ao simplesmente designar um repositório do Git como repositório “central”, é possível replicar um fluxo de trabalho centralizado usando o Git. Isso é realizado por convenções em vez de ser ligado ao próprio VCS.

Repositórios vazios versus clonados

Se você utilizou git clone na seção anterior "Como inicializar um novo repositório" para configurar o repositório local, o repositório já estará configurado para colaboração remota. O git clone vai configurar automaticamente o repositório com um remoto apontado para o URL Git do qual foi clonado. Isso significa que, depois que faz alterações em um arquivo e as confirma, você pode usar git push nessas alterações para o repositório remoto.

Se utilizou git init para fazer um repositório atualizado, você não terá nenhum repositório remoto para o qual enviar alterações. Um padrão comum ao inicializar um novo repositório é ir para um serviço hospedado do Git, como Bitbucket, e criar um repositório lá. O serviço vai fornecer um URL Git que pode, então, ser adicionado ao repositório do Git local e git push para o repositório hospedado. Depois de criar um repositório remoto com o serviço de escolha, será necessário atualizar o repositório local com um mapeamento. Vamos discutir este processo no guia Configuração e Definição abaixo.

Se preferir hospedar seu próprio repositório remoto, você precisará configurar um "Repositório vazio". Tanto git init quanto git clone aceitam um argumento --bare. O caso de uso mais comum para o repositório vazio é criar um repositório do Git central remoto

Configuração e definição: git config

Depois de estabelecer uma configuração de repositório remoto, você precisa adicionar um URL de repositório remoto ao git config local e definir uma ramificação upstream para as ramificações locais. O comando git remote oferece essa utilidade.

git remote add <remote_name> <remote_repo_url>

Este comando vai mapear o repositório remoto em <remote_repo_url> em uma referência no repositório local em <remote_name>. Depois de ter mapeado o repositório remoto, você pode enviar ramificações locais para ele.

git push -u <remote_name> <local_branch_name>

Este comando vai enviar a ramificação do repositório local em <local_branc_name> para o repositório remoto em <remote_name>.

Para obter mais detalhes sobre git remote, veja a página Git remoto.

Além de configurar um URL de repositório remoto, você pode também precisar definir opções de configuração global do Git, como nome de usuário ou e-mail. O comando git config permite configurar a instalação do Git (ou um repositório individual) da linha de comando. Este comando pode definir tudo, de informações até preferências do usuário, para o comportamento de um repositório. Várias opções comuns de configuração são listadas abaixo.

O Git armazena opções de configuração em três arquivos separados, que permite definir o escopo de opções para repositórios individuais (locais), usuário (global) ou todo o sistema (sistema):

  • Local: <repo>/.git/config – Configurações específicas do repositório.
  • Global: /.gitconfig – Configurações específicas do usuário. É aqui que as opções definidas com o sinalizador --global são armazenadas.
  • Sistema: $(prefix)/etc/gitconfig – Configurações de todo o sistema.

Defina o nome do autor a ser usado para todas as confirmações no repositório atual. Geralmente, você vai querer usar o sinalizador --global para definir as opções de configuração para o usuário atual.

git config --global user.name <name>

Defina o nome do autor a ser usado para todas as confirmações pelo usuário atual.

Adicionar a opção --local ou não transmitir uma opção de nível de configuração vai definir o user.name para o repositório local atual.

git config --local user.email <email>

Defina o e-mail do autor a ser usado para todas as confirmações pelo usuário atual.

git config --global alias.<alias-name> <git-command>

Crie um atalho para um comando do Git. Este é um poderoso utilitário para criar atalhos personalizados para comandos do Git comumente usados. Um exemplo simplista seria:

git config --global alias.ci commit

Isso cria um comando ci que você pode executar como atalho para git commit. Para saber mais sobre aliases do Git, visite a página git config.

git config --system core.editor <editor>

Defina o editor de texto usado para comandos como git commit para todos os usuários na máquina atual. O argumento <editor> deve ser o comando que ativa o editor desejado (por exemplo, vi). Este exemplo introduz a opção --system. A opção --system vai definir a configuração para todo o sistema, ou seja, todos os usuários e repositórios em uma máquina. Para obter informações mais detalhadas sobre os níveis de configuração, visite a página de git config.

git config --global --edit

Abra o arquivo de configuração global em um editor de texto para edição manual. Um guia detalhado sobre como configurar um editor de texto para o Git usar pode ser encontrado na página do git config.

Discussão

Todas as opções de configuração são armazenadas em arquivos sem formatação, então, o comando git config é realmente apenas uma interface conveniente de linha de comando. Geralmente, você vai precisar configurar uma instalação do Git apenas na primeira vez que começar a trabalhar em uma nova máquina de desenvolvimento e, para praticamente todos os casos, vai querer usar o sinalizador --global. Uma exceção importante é substituir o endereço de e-mail do autor. Talvez você queira definir seu endereço de e-mail pessoal para repositórios pessoais e de código aberto e seu endereço de e-mail profissional para repositórios relacionados ao trabalho.

O Git armazena opções de configuração em três arquivos separados, o que permite que você faça o escopo de opções para repositórios individuais, usuários ou todo o sistema:

  • <repo>/.git/config – Configurações específicas do repositório.
  • ~/.gitconfig – Configurações específicas do usuário. É aqui que as opções definidas com o sinalizador --global são armazenadas.
  • $(prefix)/etc/gitconfig – Configurações de todo o sistema.

Quando as opções nesses arquivos são conflitantes, as configurações locais substituem as configurações do usuário, o que substitui todo o sistema. Se abrir qualquer um desses arquivos, você vai ver algo parecido com o seguinte:

[user] name = John Smith email = john@example.com [alias] st = status co = checkout br = branch up = rebase ci = commit [core] editor = vim

É possível editar esses valores manualmente para se obter exatamente o mesmo efeito que git config.

Exemplo

A primeira coisa que você vai querer fazer depois de instalar o Git é informar seu nome/e-mail e personalizar algumas das configurações padrão. Uma configuração inicial típica pode ser parecida com o seguinte:

Tell Git who you are git config

git --global user.name "John Smith" git config --global user.email john@example.com

Selecione seu editor de texto favorito

git config --global core.editor vim

Adicione alguns aliases parecidos com SVN

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.up rebase
git config --global alias.ci commit

Isso vai produzir o arquivo ~ /.gitconfig da seção anterior. Dê uma olhada mais detalhada em git config na página do git config.

Resumo

Aqui, demonstramos como criar um repositório do Git usando dois métodos: git init e git clone. Este guia pode ser aplicado para gerenciar o código fonte de software ou outro conteúdo que precise ser atualizado. Git add, git commit, git push e git remote também foram introduzidos e utilizados em alto nível. 

Leia o guia sobre qual sistema de repositório de código é certo para sua equipe

Pronto para aprender sobre o Git?

Experimente este tutorial interativo.

Comece agora mesmo