Close

git init

En esta página, analizaremos el comando git init en profundidad. Cuando termines de leerla, conocerás la funcionalidad principal y el conjunto ampliado de funciones de git init. Este análisis incluye lo siguiente:

  • Las opciones de git init y para qué se usa
  • Información general sobre el directorio de .git
  • Valores personalizados del entorno del directorio de git init
  • Una comparación de git init y git clone
  • Los repositorios bare de git init
  • Las plantillas de git init

El comando git init crea un nuevo repositorio de Git. Puede utilizarse para convertir un proyecto existente y sin versión en un repositorio de Git, o para inicializar un nuevo repositorio vacío. La mayoría de los demás comandos de Git no se encuentran disponibles fuera de un repositorio inicializado, por lo que este suele ser el primer comando que se ejecuta en un proyecto nuevo.

Al ejecutar git init, se crea un subdirectorio de .git en el directorio de trabajo actual, que contiene todos los metadatos de Git necesarios para el nuevo repositorio. Estos metadatos incluyen subdirectorios de objetos, referencias y archivos de plantilla. También se genera un archivo HEAD que apunta a la confirmación actualmente extraída.

Aparte del directorio de .git, en el directorio raíz del proyecto, se conserva un proyecto existente sin modificar (a diferencia de SVN, Git no requiere un subdirectorio de .git en cada subdirectorio).

De manera predeterminada, git init inicializará la configuración de Git en la ruta del subdirectorio de .git. Puedes cambiar y personalizar dicha ruta si quieres que se encuentre en otro sitio. Asimismo, puedes establecer la variable de entorno $GIT_DIR en una ruta personalizada para que git init inicialice ahí los archivos de configuración de Git. También puedes utilizar el argumento --separate-git-dir para conseguir el mismo resultado. Lo que se suele hacer con un subdirectorio de .git independiente es mantener los archivos ocultos de la configuración del sistema (.bashrc, .vimrc, etc.) en el directorio principal, mientras que la carpeta de .git se conserva en otro lugar.

rama de git
Material relacionado

rama de git

Logotipo de Bitbucket
VER LA SOLUCIÓN

Aprende a usar Git con Bitbucket Cloud

Uso


En comparación con SVN, el comando git init permite crear de manera increíblemente sencilla nuevos proyectos con control de versiones. Con Git, no es necesario que crees un repositorio, importes los archivos ni extraigas una copia de trabajo. Además, Git no precisa de la existencia previa de ningún servidor o privilegios de administrador. Basta con que utilices el comando cd en el subdirectorio de tu proyecto y ejecutes git init para que tengas un repositorio de Git totalmente funcional.

git init

Transforma el directorio actual en un repositorio de Git. De esta forma, se añade un subdirectorio de .git al directorio actual y se crea la posibilidad de empezar a registrar las revisiones del proyecto.

git init <directory>

Crea un repositorio de Git vacío en el directorio especificado. Al ejecutar este comando, se creará un nuevo subdirectorio llamado <directory> que nada más contendrá el subdirectorio .git.

Si ya has ejecutado git init en el directorio de un proyecto y este contiene un subdirectorio de .git, puedes volver a ejecutar git init de forma segura en el mismo directorio del proyecto. No se reemplazará la configuración de .git existente.

Comparación de git init y git clone

Una breve nota: git init y git clone pueden confundirse fácilmente. A grandes rasgos, ambos pueden usarse para "inicializar un nuevo repositorio de Git". Sin embargo, git clone depende de git init. El comando git clone se emplea para crear una copia de un repositorio ya existente. De manera interna, git clone llama primero a git init para generar un nuevo repositorio. Luego, copia los datos del repositorio existente y extrae un nuevo conjunto de archivos de trabajo. Encontrarás más información al respecto en la página sobre git clone.

Repositorios bare --- git init --bare


git init --bare <directory>

Inicializa un repositorio de Git vacío, pero omite el directorio de trabajo. Los repositorios compartidos deberían crearse siempre con la marca --bare (consulta la explicación a continuación). Por convención, los repositorios inicializados con la marca --bare terminan en .git. Por ejemplo, la versión bare de un repositorio llamado my-project debería almacenarse en un directorio denominado my-project.git.

La marca --bare crea un repositorio que no cuenta con un directorio de trabajo, lo que imposibilita la edición de archivos y la confirmación de cambios en ese repositorio. Podrías crear un repositorio bare para aplicar los comandos git push y git pull, pero nunca realizar confirmaciones directamente en él. Los repositorios centrales siempre deberían crearse como repositorios bare, ya que el envío de ramas a un repositorio que no sea bare puede sobrescribir los cambios. Debes entender --bare como una forma de marcar un repositorio como una unidad de almacenamiento, en contraposición a un entorno de desarrollo. Esto significa que, para prácticamente todos los flujos de trabajo de Git, el repositorio central es de tipo bare, mientras que los repositorios locales de los desarrolladores, no.

Repositorios bare

Lo más habitual es que git init --bare se utilice para crear un repositorio central remoto:

ssh <user>@<host> cd path/above/repo git init --bare my-project.git

Primero, aplica el SSH en el servidor que contendrá tu repositorio central. Después, dirígete al lugar donde quieras almacenar el proyecto. Por último, usa la marca --bare para crear un repositorio de almacenamiento central. A continuación, los desarrolladores deben clonar my-project.git para generar una copia local en su máquina de desarrollo.

Plantillas de git init


git init <directory> --template=<template_directory>

Inicializa un nuevo repositorio de Git y copia los archivos de en el repositorio.

Las plantillas te permiten inicializar un nuevo repositorio con un subdirectorio de .git predefinido. Puedes configurar una plantilla para que tenga los directorios y archivos predeterminados que se copiarán en el subdirectorio de .git del nuevo repositorio. Las plantillas de Git predeterminadas suelen ubicarse en el directorio /usr/share/git-core/templates, pero pueden encontrarse en una ruta diferente de tu equipo.

Las plantillas predeterminadas constituyen un buen ejemplo de cómo utilizar las funciones de las plantillas. Una potente función que aparece en las plantillas predeterminadas es la configuración de hooks de Git. Puedes crear una plantilla con hooks de Git predefinidos e inicializar tus nuevos repositorios de Git con los hooks habituales listos para usarse. Encontrarás más información al respecto en la página sobre los hooks Git.

Configuración


git init <directory> --template=<template_directory>

Todas las configuraciones de git init emplean el argumento . Si proporcionas el directorio , el comando se ejecutará en él. Si este directorio no existe, se creará. Además de la configuración y las opciones ya comentadas, git init presenta otras opciones de línea de comandos. A continuación, se recoge una lista completa de ellas:

-Q

--QUIET

Solo notifica los mensajes, errores y advertencias "de nivel crítico". Los demás resultados se silencian.

--BARE

Crea un repositorio bare (consulta la sección "Repositorios bare" anterior).

--TEMPLATE=

Especifica el directorio desde el que se utilizarán las plantillas (consulta la sección "Plantillas de git init" anterior).

--SEPARATE-GIT-DIR=

Crea un archivo de texto que contiene la ruta a . Este archivo actúa como un enlace al directorio de .git. Esto resulta muy útil si quieres almacenar tu directorio de .git en una ubicación o unidad independiente de los archivos de trabajo de tu proyecto. Algunos de los casos prácticos en los que se usa --separate-git-dir son los siguientes:

  • Para mantener los archivos ocultos de la configuración del sistema (.bashrc, .vimrc, etc.) en el directorio principal, mientras que la carpeta de .git se conserva en otro lugar.
  • Cuando tu historial de Git ocupa mucho espacio en el disco y necesitas moverlo a otro sitio de una unidad independiente de gran capacidad.
  • Cuando quieres tener un proyecto de Git en un directorio de acceso público como, por ejemplo, `www:root`.

Puedes llamar a git init --separate-git-dir en un repositorio existente y el directorio de .git dir se moverá a la ruta de especificada.

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

Define los permisos de acceso del nuevo repositorio. Esto especifica qué usuarios y grupos de los que utilizan permisos de nivel de Unix pueden realizar las acciones de envío e incorporación de cambios en el repositorio.

Ejemplos


Creación de un nuevo repositorio de Git para una base de código existente

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

Creación de un nuevo repositorio bare

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

Creación de una plantilla de git init e inicialización de un nuevo repositorio de Git a partir de la plantilla

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

Compartir este artículo
Tema siguiente

Lecturas recomendadas

Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.

Gente que colabora utilizando un muro lleno de herramientas

Blog de Bitbucket

Ilustración de Devops

Ruta de aprendizaje de DevOps

Demostraciones de funciones con expertos de Atlassian del Centro de demostraciones

Cómo funciona Bitbucket Cloud con Atlassian Open DevOps

Suscríbete para recibir el boletín de DevOps

Thank you for signing up