¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Git
  3. Creación de un repositorio
Extrait - Git Controle la gestión de sus versiones (conceptos, utilización y casos prácticos) (2a edicion)
Extractos del libro
Git Controle la gestión de sus versiones (conceptos, utilización y casos prácticos) (2a edicion) Volver a la página de compra del libro

Creación de un repositorio

Crear un repositorio local

Para cualquier nuevo proyecto que se desea versionar, se requiere crear un nuevo repositorio. Luego será en este depósito donde Git almacenará toda nuestra información. Para esto, hay que dirigirse a la carpeta raíz del proyecto. Por ejemplo, si el proyecto es un sitio web simple, podemos imaginar que el expediente que contendrá el proyecto se llamará www. En nuestro caso, la carpeta que va a contener el código del proyecto se llama repositorio. Debemos dirigirnos a esta carpeta y ejecutar el comando siguiente:

git init 

Git confirma la creación del repositorio con el siguiente mensaje:

Initialized empty Git repository in /home/javier/Proyectos/
repositorio/.git/ 

Esta acción creará una carpeta llamada .git en la raíz del proyecto. En la mayoría de los exploradores de archivos, esta carpeta es por defecto invisible. Puede usar la línea de comandos para ver esta carpeta con el comando ls -la de los sistemas Linux o Mac OS, y también en Windows utilizando la herramienta Cygwin.

De forma predeterminada, la creación de un repositorio crea automáticamente una rama master. Para cambiar el nombre de esta rama, es posible establecer la opción de configuración init.defaultBranch como en el ejemplo siguiente.

git config --global init.defaultBranch main 
touch README.md 
git init 
Repositorio Git vacío inicializado...

El contenido de la carpeta .git

El archivo .git alberga todo el contenido del repositorio utilizado por Git. De forma práctica, vamos a ver las carpetas y archivos incluidos en esta carpeta. Para esto, debemos ir al directorio .git usando el comando cd.

cd .git  
ls -la 

El sistema operativo mostrará una lista de archivos y carpetas:

drwxr-xr-x 2 javier javier 4096 ene  4 18:14 branches  
-rwxr--r-- 1 javier javier   92 ene  4 18:14 config 
-rw-r--r-- 1 javier javier   73 ene  4 18:14 description  
-rw-r--r-- 1 javier javier   23 ene  4 18:14 HEAD  
drwxr-xr-x 2 javier javier 4096 ene  4 18:14 hooks  
drwxr-xr-x 2 javier javier 4096 ene  4 18:14 info  
drwxr-xr-x 4 javier javier 4096 ene  4 18:14 objects  
drwxr-xr-x 4 javier javier 4096 ene  4 18:14 refs 

Cada uno de estos archivos o carpetas contiene elementos que Git utiliza para seguir nuestro código. He aquí una lista de archivos y carpetas y su contenido (algunos términos pueden parecer oscuros, pero serán tratados a continuación en este libro):

  • HEAD: contiene la referencia del commit a partir del cual se trabaja. Es una referencia que depende de la rama sobre la cual nos encontramos. En la continuación de este libro (y en muchos casos), HEAD designará el commit más reciente de una rama y por defecto el commit más reciente de la rama actual....

El archivo README

Una buena práctica al crear un repositorio consiste en explicar el proyecto en un archivo README en la raíz del proyecto. Este archivo se visualiza en la página GitHub principal de un proyecto. Como ejemplo, podemos ver las páginas GitHub de los proyectos Django y Bootstrap consultando los enlaces siguientes:

En estas páginas se encuentra un bloque que contiene las carpetas y archivos de la raíz del proyecto. Por debajo de este bloque se encuentra el bloque llamado README.md, que contiene la presentación del proyecto. El archivo README de Bootstrap contiene la extensión md de Markdown y el de Django contiene la extensión rst de reStructuredText. Son dos formatos que abordaremos en la continuación de este capítulo.

La presentación de un proyecto es muy importante y no debe descuidarse. Esta presentación se dirige sobre todo a los desarrolladores que utilicen o participen en el proyecto. Debe ser muy clara y contener varias partes:

  • Una parte que presenta el proyecto: sus características, sus dependencias, etc. Esta parte debe ser lo más comprensible posible. Incluso un usuario principiante debe comprender esta parte sin dificultad.

  • Una parte que explique rápidamente el uso del proyecto. Si se trata de una librería, se debe presentar en 5 a 10 líneas de código...

Markdown

1. Presentación

Markdown es un lenguaje de presentación que gana en popularidad desde hace varios años, como muestra el gráfico Google Trends siguiente:

IMAGES/03EPT01N.png

Fuente: http://www.google.es/trends/explore#q=markdown

Este lenguaje no es un lenguaje de presentación con una estructura XML como lo es HTML. Este lenguaje fue diseñado con el fin de ser legible directamente en modo texto, lo que lo ha hecho muy popular entre los desarrolladores. En efecto, un formato como el Markdown puede consultarse en modo texto y, por lo tanto, puede ser fácilmente versionado. Además, se puede exportar los archivos Markdown fácilmente a código HTML u otros formatos.

La sintaxis oficial está documentada en el vínculo siguiente: http://daringfireball.net/projects/markdown/syntax

Algunas sintaxis no son oficiales, pero por lo general se ejecutan correctamente por el software y bibliotecas con interfaz con Markdown. Estas permiten añadir funcionalidades ausentes en el formato oficial. Los archivos Markdown llevan por lo general la extensión .md.

He aquí un ejemplo de un archivo Markdown muy simple de un juego ficticio y su visualización en GitHub.

# Strategiii: lo mejor de la estrategia 
 
 ## Funcionalidades 
 
 + ¡64 unidades diferentes!  
 + ¡La **mejor IA** jamás vista! 

Esta es la forma en que el archivo se mostrará...

RestructuredText

1. Presentación

ReStructuredText es otro formato de presentación, al igual que Markdown. Es un poco menos popular que Markdown, pero propone algunas opciones que no se encuentran en este.

La documentación oficial es muy completa: http://docutils.sourceforge.net/rst.html#reference-documentation

La presentación de la sintaxis de reStructuredText será más breve, porque conviene a usos más avanzados que Markdown y su aprendizaje excede el marco de este libro. Conviene tener en cuenta que las posibilidades de reStructuredText van mucho más allá de los pocos ejemplos siguientes.

Los archivos de reStructuredText llevan por lo general la extensión .rst.

2. Elementos de sintaxis

a. Títulos

En el caso de los títulos, debemos destacarlos con una sucesión de caracteres. Estos caracteres pueden ser muchos. He aquí la lista, aconsejada por la documentación oficial, de los caracteres utilizables para definir los títulos: = - ` : . ’ " ~ ^ _ * + #

He aquí un ejemplo compuesto de varios títulos:

Título de nivel 1 
=================== 
 
Título de nivel 2 
---------------------- 
 
Título de nivel 1 
=================== 

La jerarquía de valores no se define por el formato, es decir, que reStructuredText seleccionará directamente los niveles adecuados. Para el primer título...

Herramientas para trabajar con Markdown

Debido a su gran popularidad, Markdown ha visto desarrolladas muchas herramientas a lo largo de los años. Los desarrolladores, los blogueros e incluso los autores de edición tradicional se interesaron por el formato; de ahí la gran diversidad de herramientas.

1. Sublime Text

Esta no es la mejor herramienta para gestionar Markdown; sin embargo, es el editor que muchos desarrolladores usan a diario. Por eso, también es normal querer utilizarlo para escribir la documentación. Sublime Text no gestiona Markdown de forma nativa (aparte del hecho de que este sea un editor de texto); sin embargo hay varios plug-ins que permiten editar Markdown de manera sencilla y visual.

Sublime Text es un editor de texto compatible con los tres sistemas operativos principales: Linux, Mac OS y Windows.

El plug-in Markdown Preview permite exportar fácilmente el contenido de un archivo Markdown a un archivo HTML. Es un sistema muy práctico para versionar una documentación y compartir una versión más legible. Ver la página GitHub del producto: https://github.com/revolunet/sublimetext-markdown-preview

El plug-in MarkdownEditing permite tener una interfaz que ofrece coloración sintáctica. Esta interfaz se muestra más intuitiva y facilita la lectura de documentos Markdown en bruto.

El plug-in MarkdownTOC (de Markdown Table Of Content) permite editar...

Configurar el repositorio local

Git nos ofrece muchas opciones de configuración para poder personalizarlo según nuestro uso.

Existen varias formas de configurar un repositorio local y hay muchos parámetros. Los abordaremos por orden:

  • la configuración mínima de un proyecto; sin esta configuración mínima, no podrá usar Git,

  • los diferentes niveles de configuración,

  • los parámetros configurables,

  • la creación y el uso de alias.

1. Configuración mínima

Esta configuración se mencionó al final del capítulo Instalación de Git, en la sección Configuración requerida, por lo que ahora no nos entretendremos demasiado en este punto. Para usar Git, es necesario pasar por una etapa de configuración previa. Sin ella, no se puede utilizar Git normalmente, y no permitirá, por ejemplo, guardar los cambios.

Esta configuración nos servirá para identificarnos y para que Git sepa que realiza tal o cual modificación. He aquí cómo configurar en nuestro repositorio nuestro nombre, apellidos y dirección de e-mail:

git config --global user.name "Nombre Apellidos" 
git config --global user.email email@dominio.ext 

Ahora que hemos definido la configuración inicial, podemos trabajar con Git. Para obtener ayuda para la configuración y sus parámetros, debemos usar el comando siguiente:

git config --help 

2. Niveles de configuración

Git utiliza archivos para almacenar los distintos elementos de configuración. Cuando utilizamos los comandos git config, modificamos indirectamente estos archivos.

Existen tres niveles de configuración en Git. Estos niveles de configuración tienen todos un alcance diferente, es decir, que los elementos...

Las opciones de configuración avanzadas

Estas opciones de configuración no son especialmente complejas; por lo general se utilizan menos que las anteriores y corresponden a necesidades más concretas.

1. Paginación

Cuando se utilizan comandos como git diff, si el resultado es superior a una página se efectuará una paginación automática empleando less (comando UNIX que muestra el texto en una página). Este tipo de paginación puede molestar a determinados usuarios que preferirían no tener ninguna paginación y navegar sin limitaciones en el documento. Para esto, se requiere definir una paginación de tipo cat:

git config --global pager = cat 

2. Expresiones regulares extendidas

Por defecto, Git no activa las expresiones regulares extendidas, es decir, que los metacaracteres, como las llaves, son totalmente ignorados. Para los que están acostumbrados a las expresiones regulares y que las utilizan habitualmente, es preferible activar la opción siguiente:

git config --global extendedRegexp = true 

3. Separador de palabras

Cuando se utiliza git diff en modo palabra (empleando la opción --color-words, por ejemplo), puede ser útil especificar a Git lo que es una palabra. Por defecto, para Git una palabra es una sucesión de caracteres separados entre sí por uno o varios espacios. Sin embargo, en una línea de código es posible no tener espacio...