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
ygit 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.
Material relacionado
rama de git
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.
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.