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 funções estendidas do git init
. Esta exploração inclui:
- Opções e uso do
git init
- Visão geral do diretório
git
- valores personalizados 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 do git 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á. Ou 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.

Material relacionado
Git Branch

VER SOLUÇÃO
Aprenda a usar o Git com o Bitbucket Cloud
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. O Git também não requer privilégios de servidor ou administrador preexistentes. Tudo o que você precisa fazer é entrar no subdiretório do projeto por cd 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. Esse processo adiciona um subdiretório .git
ao diretório atual e possibilita iniciar a gravação de revisões do projeto.
git init <directory>
Cria um repositório do Git vazio no diretório especificado. A execução desse comando cria um novo subdiretório chamado <directory> contendo apenas o 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. Essa ação não vai substituir a configuração do .git
.
git init versus. git clone
Uma rápida observação: é fácil confundir o git init
e o git clone
. 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 checkout 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 <directory>
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 marcação --bare
cria um repositório que não tem um diretório ativo, tornando impossível editar arquivos e fazer commit de 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. Ou seja: 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.
O caso de uso mais comum para o git init --bare
é criar um repositório central remoto:
ssh <user>@<host> cd path/above/repo git init --bare my-project.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 <directory> --template=<template_directory>
Inicializa um novo repositório do Git e copia arquivos do diretório < template_directory >
para o repositório.
Os templates permitem inicializar um novo repositório com um subdiretório .git
. Você pode configurar um template para ter diretórios e arquivos padrão que vão ser copiados para o subdiretório .git
do novo repositório . 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 as funções do template. Uma função poderosa 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
git init <directory> --template=<template_directory>
Todas as configurações de git init
levam um argumento <directory>
. 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 do qual os templates vão ser usados. (Consulte a seção "Templates Git Init" acima.)
--SEPARATE-GIT-DIR=
Cria um arquivo de texto contendo o caminho para . Este arquivo atua como um link para o diretório
.git
. É útil se você quer armazenar o diretório .git
em um local ou unidade separada dos arquivos de trabalho do seu projeto. Alguns casos de uso comuns para --separate-git-dir
são:
- Para manter os "dotfiles" (
.bashrc, .vimrc
, etc.) da configuração do sistema no diretório inicial, mantendo a pasta.git
em outro lugar - Seu histórico do Git cresceu muito em tamanho de disco e precisa ser movido para outro lugar com uma unidade separada de alta capacidade
- O melhor é ter o projeto Git em um diretório que pode ser acessado em modo 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. Assim, 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
Compartilhar este artigo
Próximo tópico
Leitura recomendada
Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.

Blog do Bitbucket

Caminho de aprendizagem de DevOps
