martes, 6 de agosto de 2024 From rOpenSci (https://ropensci.org/es/blog/2024/08/06/git-tricks/). Except where otherwise noted, content on this site is licensed under the CC-BY license.
Hace poco Yanina Bellini Saibene nos recordó actualizar el perfil de Slack:
Recordatorio amigable: Aumentemos el valor de nuestra comunidad de Slack de rOpenSci. Por favor, agreguen detalles a su perfil, como su foto, su red social favorita, lo que hacen, sus pronombres y cómo se pronuncia su nombre.
Después de hacer eso, decidí actualizar mis fotos de perfil en el sitio web de rOpenSci, y termine aprendiendo algunos trucos de git que voy a compartir acá. Gracias a Maëlle Salmon por motivarme a escribir este artículo y a Steffi LaZerte por revisarlo.
Cuando quise clonar el repositorio del sitio web de rOpenSci, me di cuenta de que era grande y que me llevaría varios minutos.
git clone https://github.com/ropensci/roweb3.git
Decidí detener el proceso e investigar cómo clonar solo la última versión de los archivos específicos que necesitaba.
Primero hice un fork (bifurcación) del repositorio (roweb3
). Usé gh
desde la terminal, pero también podría haberlo hecho manualmente desde GitHub.
# Si no usas `gh`, hace un "fork" de ropensci/roweb3 desde GitHub
gh repo fork ropensci/roweb3
Luego creé un directorio local vacío roweb3
y lo enlacé al fork.
git init roweb3
cd roweb3
git remote add origin [email protected]:maurolepore/roweb3.git
¡Ahora los trucos! Para evitar descargar todo el repositorio primero encontre los archivos específicos que necesitaba en el buscador de GitHub (Go to file), luego:
git config core.sparseCheckout true
echo "themes/ropensci/static/img/team/mauro*" >> .git/info/sparse-checkout
git pull
con --depth 1
para obtener solo la última versión de esos archivos.git pull --depth=1 origin main
Exploré el resultado con tree
y vi que era justo lo que necesitaba modificar:
tree
.
└── themes
└── ropensci
└── static
└── img
└── team
├── mauro-lepore.jpg
└── mauro-lepore-mentor.jpg
Aunque esos trucos fueron útiles, aún quería saber cuán grande era el repositorio, así que lo cloné entero como de costumbre y lo exploré con du
:
du --human-readable --max-depth=1 .
219M ./themes
164K ./.Rproj.user
56K ./archetypes
628K ./resources
168K ./data
376M ./.git
20K ./static
12K ./.github
40K ./scripts
161M ./content
24K ./layouts
475M ./public
1.3G .
Esto confirmó que el repositorio es mucho más grande que los que manejo normalmente. Pero ahora sé algunos trucos más de Git (¡y aún más sobre cómo bloguear en rOpenSci :-)).
Si todo lo que tienes es un martillo, todo te parecerá un clavo. — Abraham Maslow
A veces, git clone
no es la herramienta adecuada para el trabajo que querés hacer. Un sparse checkout y un pull superficial pueden ayudarte a obtener específicamente lo que necesitas.
Si te gusta aprender de videos, podés buscar “git” en mi canal de YouTube o explorar las listas de reproducción git, git-from-the-terminal, y git-con-la-terminal.
¿Cuáles son tus trucos favoritos de Git? ¿Qué tal si blogueas sobre eso?