git init

Esta página vai explorar o comando git init a fundo. No final desta página, você vai ser informado sobre a funcionalidade principal e o conjunto de recursos estendidos do git init. Esta exploração inclui:

  • opções e uso do git init
  • visão geral do diretório.git
  • personalizar valores do ambiente do diretório git init
  • git init vs. git clone
  • repositórios vazios do git init
  • templates do git init

O comando git init cria um novo repositório do Git. Ele pode ser usado para converter um projeto existente e não versionado em um repositório do Git ou inicializar um novo repositório vazio. A maioria dos outros comandos Git não está disponível fora de um repositório inicializado, portanto, este costuma ser o primeiro comando que você executa em um novo projeto.

A execução dogit init cria um subdiretório .git no diretório de trabalho atual, que contém todos os metadados Git necessários para o novo repositório. Esses metadados incluem subdiretórios para objetos, referências e arquivos de template. Também é criado um arquivo HEAD que aponta para o commit em uso no momento.

Além do diretório .git, no diretório raiz do projeto, um projeto existente permanece inalterado (diferente do SVN, o Git não requer um subdiretório .git em cada subdiretório).

Por padrão, o git init vai inicializar a configuração do Git para o caminho do subdiretório .git. O caminho do subdiretório pode ser modificado e personalizado se você quiser que ele seja hospedado em outro lugar. Você pode definir a variável de ambiente $GIT_DIR como um caminho personalizado e o git init vai inicializar os arquivos de configuração do Git lá. Além disso, você pode usar o argumento --separate-git-dir para o mesmo resultado. Um caso de uso comum para um subdiretório separado .git é manter os "dotfiles" de configuração do sistema (.bashrc, .vimrc etc.) no diretório inicial, mantendo a pasta .git em outro lugar.

Uso

Comparado ao SVN, o comando git init é uma maneira muito fácil de criar novos projetos controlados por versão. O Git não exige que você crie um repositório, importe arquivos e faça check-out de uma cópia de trabalho. Além disso, o Git não requer privilégios de servidor ou administrador pré-existentes. Tudo o que você precisa fazer é entrar no subdiretório do projeto e executar o git init, e você vai ter um repositório do Git com funcionalidade total.

 git init

Transforma o diretório atual em um repositório do Git. Isso adiciona um subdiretório .git ao diretório atual e possibilita iniciar a gravação de revisões do projeto.

 git init 

Cria um repositório do Git vazio no diretório especificado. A execução deste comando vai criar um novo subdiretório chamado contendo nada além do subdiretório .git.

Se você já executou o git init em um diretório de projeto e ele contém um subdiretório .git, você pode executar outra vez o git init com segurança no mesmo diretório de projeto. Isso não vai substituir a configuração do .git.

git init versus. git clone

Uma rápida observação: o git init e o git clone podem ser confundidos com facilidade. No nível superficial, ambos podem ser usados para "inicializar um novo repositório do Git." Contudo, o git clone é dependente do git init. O git clone é usado para criar uma cópia de um repositório existente. No nível interno, o git clone primeiro chama o git init para criar um novo repositório. Em seguida, copia os dados do repositório existente e faz check-out de um novo conjunto de arquivos de trabalho. Saiba mais na página do git clone.

Repositórios vazios --- git init --bare

 git init --bare 

Inicializa um repositório do Git vazio, mas omite o diretório de trabalho. Repositórios compartilhados sempre devem ser criados com a flag--bare (confira a discussão abaixo). Por convenção, os repositórios inicializados com a flag--bare terminam em .git. Por exemplo, a versão vazia de um repositório chamado meu-projeto deve ser armazenada em um diretório chamado meu-projeto.git.

A flag --bare cria um repositório que não tem um diretório ativo, tornando impossível editar arquivos e confirmar alterações nesse repositório. Você cria um repositório vazio para git push e git pull, mas nunca faz o commit direto para ele. Repositórios centrais sempre devem ser criados como repositórios vazios, porque enviar ramificações por push a um repositório não vazio tem o potencial de sobrescrever alterações. Imagine o --bare como uma maneira de marcar um repositório como um recurso de armazenamento, em oposição a um ambiente de desenvolvimento. Isso significa que, para quase todos os fluxos de trabalho do Git, o repositório central é vazio e os repositórios locais dos desenvolvedores são não vazios.

Tutorial do Git: Repositórios Vazios

O caso de uso mais comum para o git init --vazio é criar um repositório central remoto:

 ssh @ cd path/above/repo git init --bare meu-projeto.git

Primeiro, você faz o SSH no servidor em que o repositório central vai estar. Em seguida, você navega para onde quiser armazenar o projeto. Por fim, você usa a flag--bare para criar um repositório de armazenamento central. Os desenvolvedores clonam meu-projeto.git para criar uma cópia local na máquina de desenvolvimento.

templates git init

 git init  --template=

Inicializa um novo repositório do Git e copia arquivos do diretório para o repositório.

Os templates permitem inicializar um novo repositório com um subdiretório .git predefinido. Você pode configurar um template para ter diretórios e arquivos padrão que vão ser copiados para o novo repositório do subdiretório .git. Os templates do Git padrão costumam residir em um diretório /usr/share/git-core/templates, mas podem estar em um caminho diferente na máquina local.

Os templates padrão são uma boa referência e exemplo de como utilizar os recursos do template. Um recurso poderoso dos templates exibidos nos templates padrão é a configuração do Git Hook. Você pode criar um template com Git Hooks predefinidos e inicializar os novos repositórios do Git com hooks comuns prontos para uso. Saiba mais sobre Git Hooks na página Git Hook.

Configuração

Todas as configurações de git init levam um argumento . Se você informa o , o comando é executado dentro do diretório. Se esse diretório não existir, ele vai ser criado. Além das opções e configurações já discutidas, o Git init tem outras opções de linha de comando, a lista completa é esta:

-Q

--QUIET

Imprime apenas mensagens de "nível crítico", erros e avisos. Todas as outras saídas são silenciadas.

--BARE

Cria um repositório vazio. (Confira a seção "Repositórios Vazios" acima.)

--TEMPLATE=

Especifica o diretório no qual os templates vão ser usados. (Confira a seção "Templates Git Init" acima.)

--SEPARATE-GIT-DIR=

Cria um arquivo de texto contendo o caminho para o . Este arquivo atua como um link para o diretório .git. Isso é útil se você quiser armazenar o diretório .git em um local separado ou na unidade dos arquivos de trabalho do projeto. Alguns casos de uso comuns para o --separate-git-dir são:

  • Para manter a configuração do sistema "dotfiles" (.bashrc, .vimrc, etc.) no diretório inicial, mantendo a pasta .git em outro lugar
  • O histórico do Git aumentou muito em tamanho de disco e você precisa movê-lo para outro local para uma unidade de alta capacidade separada
  • Você quer que um projeto Git fique em um diretório acessível ao público, como `www:root`

Você pode chamar o git init --separate-git-dir em um repositório existente e o .git dir vai ser movido para o caminho .

--SHARED[=(FALSE|TRUE|UMASK|GROUP|ALL|WORLD|EVERYBODY|0XXX)]

Define as permissões de acesso para o novo repositório. Isso especifica quais usuários e grupos que usam permissões no nível Unix têm permissão para enviar push/pull ao repositório.

Exemplos

Crie um novo repositório do Git para uma base de código existente

 cd /path/to/code \ git init \ git add . \ git commit

Crie um novo repositório bare

 git init --bare /path/to/repo.git

Crie um template git init e inicialize um novo repositório do Git a partir do template

 mkdir -p /path/to/template \ echo "Hello World" >> /absolute/path/to/template/README \ git init /new/repo/path --template=/absolute/path/to/template \ cd /new/repo/path \ cat /new/repo/path/README

Pronto para aprender sobre o Git?

Experimente este tutorial interativo.

Comece agora mesmo