Necesito una forma de exportar un cambio oculto a otra computadora.
En Computer1 hice
$ git stash save feature
Estoy tratando de llevar el parche oculto a un archivo y luego importarlo a otra computadora
$ git stash show -p > patch
Este comando me da un archivo que puedo mover a otra computadora donde se clona este repositorio, pero la pregunta es cómo volver a importarlo como escondite.
Gracias
git stash save
ahora está en desuso a favor degit stash push
Respuestas:
Puede aplicar un archivo de parche (sin confirmar los cambios aún) simplemente ejecutando
Luego, simplemente puede crear un nuevo alijo desde el directorio de trabajo actual:
fuente
git stash show "stash@{0}" -p > patch
lugar del segundo comando de shell del OP.stash@{0}
..Alternativamente, puede crear una rama desde su escondite (en la computadora 1), utilizando
compromete tus cambios:
luego agréguelo como control remoto en la computadora 2:
ahora puede recuperar la información remota utilizando
ahora puede importar la confirmación de la forma que desee; usando git cherry-pick , git rebase o lo que quieras ... Si quieres que se vea como si acabaras de aplicar git stash ; puedes usar git cherry-pick --no-commit.
Si no tiene conexión directa entre la computadora1 y la computadora2; puedes usar un control remoto (como github o algo similar):
y en la computadora2:
fuente
git stash list --oneline
), por lo que técnicamente no tiene que aplicar el escondite a un nuevo objeto de compromiso. En otras palabras, no es necesario crear una nueva rama. Sin embargo, empujar un alijo directamente a un control remoto es difícil por decir lo menos.Alternativamente, puede exportar las reservas locales completas a otro compilador de la siguiente manera
git pull
tanto en el directorio git antiguo como en el nuevo para garantizar que ambos tengan los últimos cambios.fuente
Cómo exportar Stash en SourceTree:
Aplique su alijo y haga una confirmación
Haga clic en su confirmación y haga un parche, lleve el archivo del parche con usted.
Vaya a un repositorio diferente, seleccione la misma rama principal que acaba de usar en 1)
Acciones / Aplicar parche, seleccione Modo: modifique los archivos de copia de trabajo, presione Aplicar parche ahora tiene modificaciones no confirmadas del parche en su entorno de trabajo actual
Hacer un nuevo alijo para el repositorio actual
fuente
Puede crear un alijo como archivo de parche desde una máquina, luego puede compartir ese archivo de parche con otras máquinas.
Crear el alijo como un parche
El "alijo @ {0}" es la referencia del alijo. Creará un archivo de parche con el último alijo. Si desea un comando diferente, use
$ git stash list
para ver su lista de escondites y seleccione cuál desea parchear.Aplicando el parche
Ahora transfiera ese alijo a otra máquina y péguelo en la carpeta raíz de su proyecto. Luego ejecuta este comando
Si hay un error y desea revertir el cambio
fuente
Otra opción es
rsync
la.git
carpeta de una computadora a otra computadora.rsync
procesa solo cambios de archivo (más rápido que una copia).Una desventaja de este enfoque es que las configuraciones también se sobrescribirán, lo que puede no ser deseable si ejecuta diferentes configuraciones .git entre las dos máquinas. Pero podría superar esto excluyendo archivos con la
--exclude
opción enrsync
.En general, creo que una solución Git nativa es más limpia, pero este
rsync
truco podría ser bueno para alguien apurado que podría estar más familiarizado con rsync que con git.fuente
El comando de inicio de la publicación original:
no funcionó para mí (por alguna razón creó archivos de parche inutilizables). En cambio tuve que:
por cada alijo que quería transferir. Luego, coloqué el repositorio 'padre' dentro del archivo: /// alcance del repositorio 'hijo', e hice lo siguiente, para cada confirmación de alijo:
Esto es más complejo pero fue el truco para mí.
fuente
Si desea mover sus cambios de una máquina a otra, siempre puede confirmar sus cambios en su máquina y luego hacer un restablecimiento parcial en su máquina.
Oficina
git commit -m "-stash-"
Cocina
git reset --soft HEAD~1
fuente
Un escondite es una confirmación especial de fusión del árbol de trabajo entre la confirmación básica y el índice. Una forma podría ser guardar cada uno como parches separados, retirar el escondite del primer padre, restaurar el índice y el árbol de trabajo de los dos parches y finalmente restaurar el escondite (parece que una respuesta es así).
Esto es necesario para recrear completamente toda la información del alijo, y si no le importa, debe al menos revisar el primer padre del alijo antes de restaurar para evitar conflictos y realizar un seguimiento de dónde se creó el alijo.
Esto es lo que hice para restaurar completamente todos los escondites de un repositorio a otro. Si no puede tenerlos en la misma computadora, puede guardar las etiquetas ocultas en un paquete después de crearlas y copiar la lista de referencias y el paquete en la computadora de destino.
Desde la raíz del repositorio original:
stash_
+ los números en la referencia de alijo lógico)NB: Esto requiere bash o shell compatible (ksh, zsh debería hacer ...) También podría incrementar una variable, por ejemplo,
stash_$((i++))
si su shell no es compatible${param//pattern}
Ahora en el nuevo repositorio, para cada referencia:
fuente