Podremos ver cómo crear repositorios especializados para recibir los cambios y fungir como base de otros proyectos, de esta forma podremos replicar en una red local el comportamiento de servicios como GitHub o Bitbucket sin ningún inconveniente, demostrando así que estos no son necesarios si queremos implementar Git en nuestra organización.
Tipos de Repositorios
Según la función y la ubicación, tenemos dos tipos de repositorios, el repositorio actual y el repositorio remoto. Veamos a continuación de que va cada uno para entender su función dentro de la administración de nuestros proyectos.
Clonar un repositorio
Clonar es la acción de copiar un proyecto Git desde su ubicación a un directorio o carpeta que elijamos, nos permite obtener todo el proyecto incluyendo el historial de commits y cambios que ha sufrido, así como todos los archivos no incluidos en el .gitignore. El acto de clonar es la mejor forma de iniciar un proyecto cuando necesitamos trabajar sobre código ya existente, para hacerlo hay que utilizar la siguiente estructura:
git clone nombre_repositorioVeamos un ejemplo de como podemos clonar un repositorio local, para poder llevar a cabo este ejemplo únicamente debemos tener un repositorio inicializado.
Asumamos que tenemos un proyecto llamado ejemplo1 y está en una carpeta llamada proyectos, lo que queremos es lograr obtener un clon del mismo pero en una nueva carpeta llamada clonados dentro del mismo sistema de archivos. Para lograr el objetivo debemos pararnos sobre la carpeta destino e indicar el comando git clone indicando la ruta del proyecto a clonar. En este ejemplo sería lo siguiente:
git clone ruta\proyectos\ejemplo1Veamos como luce en nuestra consola de comandos:
Notamos como luego al listar los directorios aparece nuestra carpeta llamada ejemplo1, aquí está el proyecto clonado con todos sus commits e historial de cambios.
El origen
Al hacer un clon de nuestro repositorio inmediatamente se crea un enlace al proyecto del cual fue clonado, este es el origen y dentro de nuestro proyecto lo veremos con la palabra origin, si hacemos un cambio en el repositorio clonado y luego hacemos push al origen, el proyecto original obtendrá el cambio.
Esta es la forma en la cual podremos compartir nuestros cambios con el repositorio central, o también la forma en la cual podremos recibir las colaboraciones de otros desarrolladores en nuestro proyecto. Vamos a crear un nuevo archivo en nuestro proyecto recién clonado y luego a hacer un push al origin, luego revisaremos la carpeta original para que veamos como recibiremos el cambio. Veamos primero como luce el original de nuestro proyecto:
Tenemos un solo archivo llamado unArchivo.txt si ahora vemos el proyecto clonado notaremos que tiene dos archivos y veremos cómo hacer el push de los cambios. Si notamos el mensaje que nos arroja veremos que lo que realmente obtendremos es un error:
Esto sucede porque Git nos ayuda a mantener a raya las inconsistencias, aquí es donde aparece la figura del repositorio desnudo, es decir, un repositorio que solamente va a recibir información de otros repositorios, de esta forma se evita que cualquier persona con acceso a nuestro sistema de archivos nos haga push a nuestro proyecto, vamos entonces a replantear todo.
Primero debemos inicializar nuestro proyecto utilizando el comando bare para indicar que es un proyecto al cual podemos hacer push, y su nombre debe contener la extensión .git, vamos a re-hacer nuestro repositorio del cual clonaremos:
Ya que tenemos nuestro nuevo clon, ahora si podremos hacer un cambio y enviarlo a nuestro repositorio remoto a través del origin del clon, vamos a repetir el ejercicio de crear un archivo al hacer commit del mismo.
Ahora, si ha transcurrido el proceso de forma exitosa, nos faltaría revisar nuestro repositorio remoto del cual hicimos este clon para ver como ahora tiene el archivo nuevo del commit que hicimos push. Para ello vamos a hacer un nuevo clon de este y así podremos observar como tenemos todo lo que se ha subido al mismo.
Pudimos ver como fácilmente hemos hecho un repositorio central remoto del cual podemos crear nuevos proyectos y así mantener nuestros controles de cambios y versiones.
Crear nuestro propio origin
Hay ocasiones en las cuales nuestro repositorio nace primero y luego es que tenemos un repositorio remoto, por lo que si hacemos el ejercicio anterior probablemente nos dé un pequeño error. Para solventar este problema Git nos permite crear nuestros propios origin, es decir, podemos inicializar un repositorio bare sin ningún contenido y luego decirle a nuestro repositorio original que va a sincronizar contra este.
Puede parecer que la palabra origin no tiene más alternativas, sin embargo esta es solo un nombre, fácilmente podemos colocarle otros nombres que nos puedan dar una referencia más efectiva, para ello podemos utilizar el comando:
git remote add “nombre” “ruta”Donde nombre será el que tendrá el remoto y ruta es la ubicación del repositorio con el cual sincronizaremos.
Hagamos un nuevo ejercicio, vamos a crear un repositorio bare totalmente vacío y luego añadiremos un nuevo remoto al último repositorio clonado con el que trabajamos en el ejercicio anterior, utilizaremos un nombre diferente de origin de forma que podamos constatar como conviven varios orígenes en un mismo repositorio. Veamos entonces el repositorio bare nuevo:
Vemos que no fue necesario colocar la terminación .git y que además no fue necesario tener un contenido previo. Ahora vamos a nuestro repositorio nuevoClonado con el cual trabajamos en el ejercicio anterior, y vamos a crear un nuevo origen llamado nuevo, veamos en la consola como luce este:
Vemos que sencillamente con hacer un push nuevo ya Git sabe a dónde debe dirigir el contenido del commit, vamos a clonar de este nuevo repositorio bare para constatar el contenido que tiene:
Con esto hemos conseguido nuestro objetivo, ahora podemos sincronizar un proyecto existente con un nuevo remoto sin ningún tipo de inconvenientes. Es muy importante que entendamos el concepto de teamwork y sincronización ya que el hecho de trabajar con Git no significa que no habrán conflictos entre los cambios del proyecto, si no que tenemos una herramienta que nos ayuda a minimizar los mismos.
Con esto hemos finalizado este tutorial, como vemos la administración de repositorios de Git no es muy compleja, simplemente debemos conocer las bases y fundamentos para poder obtener estructuras que nos permitan llevar el control de nuestro trabajo.
Eres un experto de los buenos en temas Git entre muchos otros. Genial tutorial.