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.