Suspender el trabajo en una twig de git y trabajar en otra (principalmente a nivel local)

Tengo que trabajar en diferentes características pequeñas y generalmente las guardo localmente con git stash save "feature name" .

Leí que usar twigs tiene más sentido , y creo que podría ser cierto, porque una bifurcación le permite mantener también files sin seguimiento (mientras que con el alijo debo recordar agregar el parámetro -u para mantenerlos). Y también tienes la opción de insertlo en el repository remoto.

Entonces, desde una twig principal de limpieza inicial, creé una nueva twig local , con git checkout -b feature_name , e hice algunos cambios, creé nuevos files, etc.

Ahora…

  1. Me gustaría detener mi trabajo incompleto (para no comprometer nada, incluso local, porque no tiene sentido para mí) y tenerlo disponible para seguir trabajando en él más adelante .
  2. Luego me gustaría volver a una twig limpia (principal, desde donde comencé) y crear una nueva para una segunda function

Pero si hago git checkout master o git checkout -b new_feature_2 obtengo todos los cambios desde la primera twig de características fusionada en la twig a la que estoy cambiando.

¿Puede alguien explicarme?

  • ¿Por qué eso? ¿No se supone que las twigs son algo "dividido" una de la otra (para que pueda trabajar en cosas diferentes al mismo time)? ¿O existe esa split SÓLO si procedo con un compromiso en las twigs?
  • ¿Hay alguna manera de cambiar a una sucursal sin fusionar el directory de trabajo? Y, ¿tiene sentido, en la lógica de Git?

¿Debo seguir usando los escondites para hacer lo que deseo? (tener diferentes directorys de trabajo locales y cambiar entre ellos, sin comprometerse con el repository).

¡Mi pregunta es porque NO ME GUSTA COMPROMETER! 🙂 O, quiero decir, tiene sentido para mí comprometer solo los cambios significativos .

No quiero que el historial se comprometa con un trabajo incompleto, o un código no probado, o cualquier cosa que no sea definitiva.

Para responder a su pregunta, las sucursales pueden estar en dos lugares diferentes en el time.

primero asegúrese de haber presionado a github, y tener una twig principal creada. Para hacer esto:

 git branch 

Debería mostrarte una twig principal. Si no, sigue las instrucciones aquí.

para crear una nueva twig que haces:

 git checkout -b new_feature_branch 

ahora estarás en new_feature_branch . Ahora puede crear los cambios que desee y solo existirán en new_feature_branch .

Una vez que haya realizado los cambios, debe enviarlos a la sucursal.

Primero agrega los nuevos files:

 git add . 

Esto agrega todos los files sin escena.

Luego, confirma los files:

 git commit -a -m "enter a commit message here, explaining what you did" 

Ahora puede volver a maestro y trabajar sin los cambios que ha realizado.

 git checkout master 

Tenga en count que puede save los cambios para más tarde sin comprometerlos con escondites. Solo necesitas hacer "git stash" para ocultar los cambios por un time. y "git stash pop" para traerlos de vuelta. Esto no es tan seguro ni tan poderoso como ramificar