comando git init: cancel, main, --bare --template options
Este artículo cubre una serie de temas relacionados con el comando git init
.
Cubriremos una breve descripción de lo que hay en la carpeta .git
que crea git init
, el cambio de la rama main
por defecto, las opciones --bare
y --template
, e incluso cómo deshacer una inicialización.
Dado que Git es uno de los pilares de la programación moderna, publicaré un artículo por cada tema principal, empezando por git init
.
1. ¿Qué es git init?
El comando git init
es la abreviatura de git initialize, y se usa para empezar a versionar un directorio con git.
Cuando empezamos a versionar de esta manera, se dice que hemos creado un nuevo repositorio git. Los repositorios contienen un montón de metadatos, incluyendo cambios en los archivos, ramas, etiquetas e información de los trabajadores.
Cuando creas un nuevo repositorio con el comando git init
, se crea internamente un directorio .git
para almacenar los diversos metadatos necesarios para el versionado.
La siguiente captura de pantalla muestra el interior del directorio .git
creado por el comando git init
.
1.1. Descripciones de archivos y directorios dentro del directorio .git
He aquí un rápido resumen de los archivos y directorios dentro del directorio .git
.
config
: Un archivo que contiene sólo la configuración del repositorio actual. Esto incluye la URL del repositorio remoto, si está vacío o no, la configuración de la rama, etc. y anula la configuración global de git. La configuración por defecto es
$ cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
HEAD
: Un enlace simbólico a la rama en la que estás trabajando actualmente. git mantiene un registro de la rama en la que estás trabajando actualmente a través de este archivo. El archivo HEAD toma los siguientes valores
$ cat HEAD
ref: refs/heads/main
description
: Un archivo que contiene una breve descripción del repositorio actual. Varias herramientas git utilizan el contenido de este fichero para introducir el repositorio. Si no hay nada registrado, tendrá el valor de abajo.
$ cat descripton
Unnamed repository; edit this file 'description' to name the repository.
-
Objetos
: Todo lo que envías a git se almacena como un objeto git. Esta carpeta actúa como una base de datos para esos objetos, almacenando la mayoría de cosas como blobs, árboles y commits usando hashes SHA-1. -
Refs
: Contiene enlaces a ramas, etiquetas y ramas remotas. Está dividido en tres subdirectorios: heads, tags y remotes. -
info
: Un directorio que contiene información adicional sobre el repositorio actual, principalmente para gestionar los datos que deben excluirse del versionado a través de la carpetaexclude
. Actúa como un archivo.gitignore
. -
hooks
: Un directorio que contiene ejemplos de scripts gancho que IGT puede ejecutar automáticamente cuando ocurren ciertos eventos. Hay scripts gancho para diferentes escenarios, como pre-commit, pre-rebase, etc. Si desea ejecutar uno de los scripts, simplemente elimine el.sample
después del nombre del archivo para convertirlo en un ejecutable. A continuación se muestran los scripts en el directorio hooks.
Este comando git init
crea un nuevo repositorio y hace sitio para los ficheros de configuración y datos asociados a él.
2. Crear la rama principal
Tradicionalmente la rama por defecto en git era master
, pero por diversas razones empezamos a cambiarla a main
. Hoy en día la rama main
se sugiere por defecto sin ninguna configuración, pero dependiendo de la versión puede que necesites configurarla manualmente. Por lo tanto, en esta sección aprenderemos cómo cambiar la rama por defecto.
La rama por defecto puede cambiarse en la configuración global de git. Localmente, esta configuración sólo se aplica a tu cuenta. El comando es el siguiente
$ git config --global init.defaultBranch main
Después de la configuración, si ha creado un nuevo repositorio utilizando el comando git ini
t, puede comprobar la rama en la que está trabajando actualmente utilizando el siguiente comando.
$ git branch
* main
Si aún no ha realizado su primer commit, puede comprobarlo con el siguiente comando
$ git symbolic-ref HEAD
refs/heads/main
3. La opción --bare
De las opciones disponibles con el comando git init
, la más popular es la opción --bare
. Esta opción se utiliza para crear un repositorio remoto.
Un repositorio remoto es un repositorio creado para permitir a múltiples desarrolladores contribuir y gestionar un único repositorio. Deben utilizarse en entornos altamente colaborativos. Los servicios comunes que alojan repositorios remotos incluyen Github, GitLab y BitBucket.
Consideremos el caso de crear un nuevo repositorio remoto en Github. Sin la opción --bare
, nuestro nuevo repositorio remoto se creará con datos y configuraciones específicas de nuestro entorno local en el servidor de Github.
Lo que queremos gestionar es el código fuente en nuestro entorno local.
En este caso, Github utilizará la opción --bare
para crear un repositorio shell vacío sin configuraciones y utilizarlo como repositorio remoto.
Si no estás utilizando un servicio de alojamiento como el anterior, y deseas configurar tu propio servidor git y crear un repositorio remoto, tendrás que utilizar la opción --bare
. Es fácil de usar.
$ git init --bare my_remote_repo.git
Como se muestra arriba, puedes añadir una opción. Una advertencia: asegúrese de nombrar su repositorio con una extensión .git
, ya que esta es la convención para muchas direcciones de repositorios remotos.
4) La opción --template
El comando git init
siempre crea la misma estructura de archivos y directorios. ¿Qué pasaría si quisiéramos añadir el mismo archivo README.md
a 10 proyectos diferentes que crea nuestra empresa? Tendrías que pasar por el proceso de crear y modificar el archivo 10 veces.
Aquí es donde entra la opción --template
, para ayudarme a crear un nuevo repositorio a mi gusto sin tener que pasar por el proceso extra de modificación.
Como su nombre indica, crea un nuevo repositorio de acuerdo a su plantilla, y todos los archivos y directorios que vimos en la Sección 1.1 pueden ser el objetivo de la plantilla.
4.1. Usando la opción --template
Para crear una plantilla personalizada, empieza copiando la plantilla por defecto utilizada por el comando git init
. El directorio de plantillas se encuentra en diferentes lugares dependiendo de tu sistema operativo, por lo que te recomendamos que utilices el siguiente comando para encontrarlo.
$ find / -type d -name "templates" 2>/dev/null
De las muchas rutas que aparecen en los resultados de la búsqueda, el directorio templates
dentro del directorio git-core
es el que estamos buscando.
En Mac OS, si estás usando git, que está instalado por defecto, existe en la siguiente ruta. Las carpetas dentro de las plantillas tienen este aspecto, que debería resultarte familiar puesto que ya las has visto en [Sección 1.1
Una vez que hayas copiado este directorio de plantillas y añadido los archivos o carpetas que quieras, puedes crear un nuevo repositorio de dos maneras.
Primero, puedes usar la opción --template
, que aplicará la plantilla una vez.
Esto es útil si desea utilizar una plantilla pero necesita cambiar la información de un proyecto a otro.
El comando es el siguiente
$ git init --template=/path/of/template-dir
La segunda forma es registrarla en una configuración global y utilizarla permanentemente. Si crea un repositorio con la misma plantilla cada vez, esto le será útil. Puede utilizar el siguiente comando.
$ git config --global init.templateDir /path/of/template-dir
Puedes ver que se creará un nuevo repositorio usando la plantilla con la ruta deseada, incluso si no le das una opción de plantilla.
5. Cancelar, eliminar y desinstalar
A veces necesitas deshacer el comando git init
para el control de versiones.
Esto puede hacerse simplemente borrando el directorio .git
que fue creado.
Necesitarás borrar todos los archivos y carpetas bajo el directorio, así que escribe el siguiente comando.
$ rm -rf .git
Si utiliza el símbolo del sistema de Windows, escriba el siguiente comando
$ rmdir /s /q .git
Si utiliza Powershell en Windows, deberá escribir el siguiente comando.
Remove-Item -Recurse -Force .git
6. Conclusión
En este artículo hemos cubierto una serie de temas relacionados con el comando git init
.
Hemos cubierto qué hay en la carpeta .git
, cómo cambiar la rama main
por defecto, las opciones --bare
y --template
, e incluso cómo deshacer una inicialización.
Espero que esto te ayude a empezar a crear nuevos repositorios con Git.
