Muy a menudo trabajo en algunas características de mi proyecto que necesito tomar un descanso antes de que sea lo suficientemente bueno para una confirmación. Sin embargo, uso diariamente dos computadoras diferentes para codificar (mi computadora portátil y el escritorio de mi laboratorio de investigación). Por ejemplo: estoy trabajando en una función en casa, luego me detengo y voy a mi laboratorio.
No quiero mezclar la sincronización en la nube (por ejemplo, Dropbox) con el seguimiento remoto de GitHub.
Simplemente cometí estados inacabados (y desordenados) de mi código antes (y lo presioné) solo con el propósito de tirar de eso en la otra computadora para continuar el trabajo. Estoy bastante seguro de que esta es una mala práctica.
Hoy, sin embargo, me encontré git stash
después de buscar en Google un poco. Parece la solución perfecta para lo que necesito.
Sin embargo, la documentación no dice si va a github una vez que presiono mis cambios. Además de eso, quiero saber si hay una manera más eficiente de lograr la movilidad que necesito.
¡Gracias por adelantado!
Respuestas:
Está bien cometer un trabajo desordenado e inacabado. Haz tu trabajo en una rama temática. Comprometerse temprano y comprometerse a menudo. Lea sobre cuándo comprometer el código? para algunas pautas sobre cuándo realizar un compromiso. Específicamente para Git, comprométete con una rama de tema y presiona con la frecuencia que quieras.
Si esta rama del tema es solo para usted, confirme y envíe un código roto. Sólo debe diferir de empujar código rota a una rama que es utilizada por otras personas. Siéntase libre de descifrar su propio código.
fuente
Los escondites están destinados para el uso local, como un lugar temporal para guardar cosas mientras juegas con las ramas.
Si usted es el único que trabaja en una sucursal, no hay ningún problema en cometer un código roto. Lo que hago cuando en situaciones similares es hacer un commit roto, luego, después de tirar de él en la otra ubicación, hacer un
git reset HEAD~1
para deshacerlo. Por supuesto, esto requiere usarlo--force
enpulls
ypushes
cuando cambie de ubicación.O simplemente espero hasta mi primer compromiso y hago un
git commit --amend
. O simplemente elimino todas las confirmaciones rotas cuando confirmo la rama de características. O simplemente no me preocupo por algunos commits rotos claramente marcados en mi historia, porque tiendo a no irme hasta que esté en un buen lugar de parada. Hay muchas opciones.fuente
--amend
lo que requiere--force
empujones. Es mejor comprometerse solo con una rama de usar y tirar.stash
no es realmente satisfactorio para nada más que limpiar su directorio de trabajo para "desatascar su rama"; Si no sestash pop
vuelve inmediatamente al estado, las cosas se volverán muy confusas.Si hay trabajo real para guardar, incluso si no es bueno para una entrada de repositorio permanente, aún debería ser una confirmación. De hecho, nunca dejo mi directorio de trabajo en un estado que no está bajo el control de la versión: uso algunos scripts Python muy simples para guardar cada cambio como una confirmación temporal. Si quieres probarlo, esto es lo que debes hacer:
git-tmp-commit
. Confirmará automáticamente todos los cambios en una rama nueva y única.ccd
script, que en realidad verifica todo desde cero hasta una carpeta temporal , eligiendo automáticamente la rama más reciente ... pero también puede buscar y extraer manualmente la ramatemporary-commits/original-branch/YYYY-MM-DD...
de un clon existente del repositorio.git-tmp-commit -r
. Esto lo llevará de regreso a la rama original † (pmaster
. Ej. ) Y dejará los cambios de la confirmación temporal en el directorio de trabajo, para que pueda continuar aquí hasta que sea la hora de una confirmación adecuada (o temporal, si tiene que irse nuevamente).† La forma en que se escribe el guión en este momento, esto solo funciona si no hay una rama
master
en el repositorio de pago . Entonces, en caso de duda, tendrías que hacerlogit branch -d master
; esto obviamente no es realmente ideal ...fuente