Close

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.

Git Branch
Material relacionado

Git Branch

Logotipo do Bitbucket
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.

Repositórios 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.

Pessoas colaborando usando uma parede cheia de ferramentas

Blog do Bitbucket

Ilustração do DevOps

Caminho de aprendizagem de DevOps

Demonstrações de funções no Demo Den com parceiros da Atlassian

Como o Bitbucket Cloud funciona com o Atlassian Open DevOps

Inscreva-se para receber a newsletter de DevOps

Thank you for signing up