Archivos sin seguimiento entre sucursales en Git

He estado buscando por aquí para search una respuesta y parece que puedo estar haciendo suposiciones incorrectas sobre cómo se supone que funcionan las twigs de git.

Tengo mi twig master y he creado una twig de características llamada profiles en la que estoy haciendo un trabajo específico para los perfiles. Mientras trabajaba en perfiles, he cambiado 5 o 6 files y he agregado otros 5 o 6 files nuevos. Necesitaba volver a la twig master para solucionar un error rápido y noté que todos los files nuevos y los files modificados estaban allí también. Supongo que esto tiene sentido ya que git no va a eliminar los files sin seguimiento de la twig master y traerlos de vuelta a mi twig de profiles , ya que, de hecho, no se han rastreado. Pero ¿qué pasa con los cambios a los files existentes? ¿Por qué están apareciendo en la twig principal?

¿Cuál es la mejor práctica aquí? Aún no estoy listo para comprometer los cambios a nivel local. ¿Debería esconder todos estos cambios, cambiar a master , hacer la pequeña corrección, volver a los profiles luego volver a aplicar el alijo?

Cualquier ayuda es apreciada. Gracias

"No estoy listo para comprometer los cambios a nivel local todavía".

Los compromisos en git son cosas locales que se pueden deshacer, volver a hacer y volver a hacer a voluntad. Solo cuando presionas el compromiso en algún lugar debes prestar atención.

Además, las confirmaciones son visibles para herramientas locales como gitk , y pueden tener diferencias de ellas y pueden volver a basarse en otras confirmaciones, etc. Es una herramienta muy poderosa. Aprende a usarlo.

Frecuentemente hago:

 git add .; git commit -a -m 'WIP' 

solo para esconder todo en el tree de trabajo actual si creo que podría ser interrumpido. Si hago algunos cambios más, uso:

 git add .; git commit --amend 

para actualizar mi compromiso "WIP" en el lugar. Cuando finalmente estoy listo para el compromiso real, solo:

 git reset --soft HEAD~; git reset 

y ahora puedo controlar cuidadosamente cuál será el compromiso final.

No aparecen en la twig principal. Si hicieras un restablecimiento completo y limpias, desaparecerían. Git simplemente preserva sus modificaciones locales cuando cambia de sucursales.

Esto es comúnmente útil; es posible que se haya dado count de que desea confirmar esas modificaciones en una sucursal diferente de la que tiene actualmente. Si las modificaciones entraban en conflicto con la diferencia entre las dos twigs, git se negaría a cambiar de twig.

Aunque tienes razón sobre el mejor enfoque, cambiar de twig limpiamente es, en mi experiencia, uno de los usos más comunes de git stash .

Parece que creaste la twig con los git branch profiles , pero no cambiaste a ella, por lo que permaneciste en el master , y obtuvo los cambios cuando hiciste una confirmación.

Después de crear la twig, debe cambiarla explícitamente con git checkout (simplemente cree una nueva twig sobre la marcha y cambie a ella en un solo paso usando git checkout -b ).

Si tiene cambios que no desea perder (o comprometerse con la twig actual), sino que los pone en la otra twig, haga lo siguiente:

 git add -A git stash git checkout <other branch> git stash pop 

Más información sobre git stash está disponible en git-scm.com