cómo hacer una export para git stash

Quiero exportar un alijo (los cambios) que veo en mi list de alijo en un file .zip/.gz . He encontrado el siguiente command:

 git stash show -p > patch 

que guarda los cambios en un file, pero también quiero mantener files .png , etc … Estoy buscando una manera de comprimir todos los cambios contenidos en el alijo en un file o una carpeta. ¿Conoces alguna solución?

Pruébalo con la opción --binary para exportar

 git stash show -p --binary > changes.patch 

Cuando quiera importarlo, aplique el parche

 git apply changes.patch 

Mientras que la respuesta de Samual Robert resuelve el problema planteado, algo a tener en count:

git stash show combinará todos los cambios por etapas y sin instancia en un solo parche, y excluirá los files sin seguimiento incluso si usó git stash -u . Por defecto, git apply hará que todos los cambios en el parche sean cambios sin instancia; puedes hacerlos escalonados dando la opción --index . Pero para preservar la distinción entre cambios escalonados y no escalonados, o para include files sin seguimiento que están en el alijo, debe hacer otra cosa.

Un alijo interno consta de dos o tres confirmaciones y alguna manipulación de ref, por lo que una opción es generar un parche de cada confirmación y luego rebuild el alijo manualmente en el otro extremo. Se necesita un pequeño truco para get los parches adecuados debido a la forma en que se relacionan los commits.

 git show stash^2 --binary >index.patch git show stash^3 --binary >untracked.patch git diff --binary stash^2 stash >wip.patch 

Luego en el extremo receptor

 git apply index.patch git add . git apply wip.patch git apply untracked.patch 

Ahora el estado no confirmado se ha recreado en el otro repository, y si lo desea, puede volver a esconderlo allí.

Si necesita materializar el cambio en el extremo receptor directamente como un alijo, sin pasar por su tree de trabajo e índice, por ejemplo, porque el lado receptor no está en un estado "limpio", podría hacerlo utilizando packages. Pero hay un truco para hacer que esto funcione. En el repository de origen

 git bundle create stash.bundle stash^..stash 

En el repository receptor

 git remote add bundle stash.bundle git fetch stash:temp git update-ref --create-reflog refs/stash temp git branch -D temp 

Tenga en count que tuvimos que dar un refspec explícito para get el ref stash del package. Si lo hubiéramos asignado directamente a refs / stash, entonces no podemos contar con que se cree una input de reflog, y sin la input de reflog, no es un alijo utilizable. Así que, en cambio, lo trajimos a una sucursal temporal, luego usamos update-ref para crear (o mover) el stash ref y actualizar el reflog.