Git
git init

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.

git init result

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 carpeta exclude. 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.

.git carpeta en 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 init, 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

git-core/templates inside

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.

copyright for git init

© 2023 All rights reserved.