2012-04-19 14 views
5

Hago mi trabajo desde tres estaciones de trabajo diferentes. Me gustaría poder dejar una estación de trabajo en medio de una sesión de codificación y reanudar este trabajo más adelante en otra estación de trabajo. Dado que el código se comparte a través de un repositorio de git remoto, me gustaría usar git para compartir este trabajo sin terminar.Comparta el trabajo sin terminar (archivos sin confirmar y nuevos) a través de Git

En términos prácticos, trabajo inacabado significa

  • archivos no se cambian,
  • hay nuevos archivos sin seguimiento,
  • archivos no se eliminan.

La mayoría de las veces estos cambios son temporales: no todos los cambios y la mayoría de los archivos sin seguimiento finalizarán en la confirmación final. Un ejemplo de archivo sin seguimiento es un archivo de prueba duplicado con 20 modificaciones ligeramente diferentes para fines de prueba; Me preocupo por todos estos archivos solo mientras estoy trabajando en un problema determinado y no quiero perder tiempo en regenerarlos cuando me cambio a otra estación de trabajo.

He visto otras preguntas y soluciones que usan una rama para impulsar estos cambios: mientras estoy de acuerdo con esto, existe el problema de que estas ramas se reescribirán todas las veces, requiriendo git push --force (No me gusta --force mucho) o permitirles que se vuelvan muy desordenados con el tiempo.

Lo que me gustaría tener es un comando simple o git alias que me permite almacenar el estado actual del directorio de trabajo sin "molestar demasiado" con el historial de git. Debe haber un comando simple complementario o git alias que me permita descargar estos cambios temporales de las otras estaciones de trabajo.

+1

utilizo Dropbox para esto. –

Respuesta

0

Probablemente pueda utilizar el alijo, pero no estoy muy seguro de si cabría.

Una opción es crear un compromiso que agregará todos los archivos necesarios, y solo selecciónelo cuando lo necesite y elimínelo usando rebase interactivo antes de pasar al repositorio público.

0

Mantenga una rama de la característica personal (preferentemente en un acuerdo de recompra personal), cometer todo, no reescribir la historia, utilizar git commit --fixup=<commit> para cambiar los cambios no deseados introducidos por una confirmación, y cuando su trabajo diario o característica se terminó justo git rebase -i este bifurcarse en la rama de característica principal o rama principal.

1
  1. Puede quitar git add -A para eliminar y agregar nuevos archivos. Luego confírmalo en una rama llamada say my_current_work. Cámbielo a través de repositorio remoto usando --force. Podrías compartir un nuevo control remoto que es solo para que puedas hacer el repositorio principal. O si tiene un enlace de red entre estaciones de trabajo, puede presionar/jalar los cambios directamente entre ellos. Antes de fusionar su trabajo en la rama principal, haga rebase -i para limpiar el historial de confirmaciones.

  2. Como alternativa al repositorio remoto para el intercambio, puede enviar parches por correo electrónico (git-send-email).

3

Utilice git stash para guardar los cambios en un archivo.

git stash 
git stash show -p > myPatchFile 

En el otro equipo les aplique

git apply myPatchFile 
Cuestiones relacionadas