Más allá de lo que ves: abril 2018

martes, 10 de abril de 2018

Git ¿Como clonar carpetas concretas?

Te ha pasado que accedes a un repositorio en github donde hay un ejemplo de lo que andas buscando pero resulta que en el repositorio hay volcadas muchas carpetas de diferentes proyectos pero que a ti tan solo te interesan algunas de ellas? Si es así Sparse Checkout es tu opción en git.

Esta característica te permitirá clonar solo aquellas carpetas que te puedan interesar del repositorio.
Vamos a verlo con un sencillo ejemplo. Supongamos que del siguiente repositorio en github https://github.com/fjmontesinos/jhipster.git tan solo deseas clonar la carpeta prueba-sparse-checkout que como puedes comprobar tan solo tiene un fichero de texto sin código alguno a modo de prueba.

Tan solo debes seguir los siguientes sencillos pasos:

  1. Crea un carpeta y accede a ella.
$ mkdir miproyecto
$ cd miproyecto
  1. Inicializa un repositorio git en la carpeta.

$ git init

  1. Activa sparse-checkout en el repositorio.

$ git config core.sparsecheckout true

  1. Indícale a git la carpeta o carpetas que desas clonar de forma exclusiva, para el caso del ejemplo: prueba-sparse-checkout

$ echo prueba-sparse-checkout >> .git/info/sparse-checkout

  1. Añade el repositorio remoto a git

$ git remote -f origin https://github.com/fjmontesinos/jhipster.git

  1. Haz un pull del proyecto y ejecuta un ls, comprobarás que tan solo se ha clonado la carpeta indicada

$ git pull origin master
$ ls -la
total 16
drwxrwxr-x 4 javiermontesinos javiermontesinos 4096 abr 10 05:49 .
drwxrwxr-x 8 javiermontesinos javiermontesinos 4096 abr 10 05:59 ..
drwxrwxr-x 8 javiermontesinos javiermontesinos 4096 abr 10 05:49 .git
drwxrwxr-x 2 javiermontesinos javiermontesinos 4096 abr 10 05:49 prueba-sparce-checkout