Git: Cómo Obtener un archivo desde otro branch

- 3 min read

En más de una ocasión he tenido la necesidad de recuperar un (o varios) archivo desde una branch diferente a la que estoy trabajando y una y otra vez debo realizar una búsqueda ya que siempre olvido el comando requerido.

Por suerte para tod@s git ofrece soluciones para casi todos los problemas que puedas imaginar (relacionados con archivos y versiones). En este artículo veremos algunas formas de solucionar este problema.

¿Cómo obtengo un archivo desde otro branch?

Primero definamos una situación en donde este problema aparezca:

Estás trabajando en un branch llamada migration, en este branch tienes un archivo llamado src/migration-tools/.

sponsor

El contenido de este sitio es y será siempre gratuito para todos. Ayudame a mantenerlo así convirtiendote en auspiciador.
Matias Hernández Logo

Tu producto o servicio podría estar aquí

En otro branch, llamémosle features se ha realizado otro trabajo pero no ha sido sincronizado con los cambios que están en migration.

Ahora, te tocó trabajar en el branch features, así que creas un nuevo branch desde ahí y te das cuenta que necesitas algunas de las herramientas de migration-tools.

¿Qué haces?.

  • ¿Abres el repositorio en el browser y copias y pegas el script que necesitas?

  • ¿Comienzas a crear pull-requests y hacer merge de los diferentes branch para poder tener acceso a esos archivos?

En mi opinión ninguna de las anteriores, la solución es: “Traer el directorio completo hacia tu branch”.

Aquí hay 3 posibles formas de resolverlo.

Git checkout

El comando git checkout te permite de una forma sencilla obtener un archivo o directorio desde otro branch, tan solo debes seguir esta sintaxis para ejecutarlo.

bash
					
						
$ git checkout <el-otro-branch> -- path/a/tu/archivo

					
				

Para resolver el caso de uso lo que harías será:

bash
					
						
$ git checkout features  
  
$ git checkout -b features-work-in-progress

$ git checkout migration -- src/migration-tools

					
				

Esto es, primero asegurarte que estás en el branch adecuado, luego crear un branch para trabajar features-work-in-progress y luego obtener la copia del directorio.

Git restore y git switch

Quizá no estés del todo al tanto con git switch, esto por que es un comando relativamente nuevo añadido a git.

  • git restore restaura tu “espacio de trabajo” eliminando los cambios que no han sido “commiteados” (a falta de mejor traducción).
  • git switch te permite cambiar branches.

¿Como funcionan en conjunto para lograr obtener un archivo o directorio desde otra branch?

Primero, debes cambiar al branch en donde quieres trabajar y “agregar” el nuevo archivo o directorio

git switch features-work-in-progress

Luego obtienes el directorio desde la otra branch

git restore --source migration -- src/migration-tools

Finalmente guarda tus cambios commit y actualiza tu repositorio push.

Git show

sponsor

El contenido de este sitio es y será siempre gratuito para todos. Ayudame a mantenerlo así convirtiendote en auspiciador.
Matias Hernández Logo

Tu producto o servicio podría estar aquí

Una última opción es utilizar git show. Este comando te permite “ver” diferentes tipos de objetos dentro del repositorio.

El proceso sería como sigue:

Cambia a el branch donde trabajarás

git switch features-work-in-progress

Luego obtienes el directorio desde la otra branch

git show migration:./src/migration-tools > ./src/migration-tools

Listo, ya puedes hacer push a tu branch.

En definitiva git es una herramienta que ofrece muchas opciones para resolver problems que te encuentras durante la “administración” de tu código, como este problema de obtener un archivo o directorio desde otro branch con el que me encuentro comúnmente.

😃 Thanks for reading!

Did you like the content? Found more content like this by joining to the Newsletter or following me on Twitter