Cambiar a otra twig sin cambiar los files del espacio de trabajo

Cloné un repository git de GitHub, hice algunos cambios y algunos compromisos; Hice bastantes cosas y todas están bastante sucias, por lo que no son adecuadas para una request de extracción. Ahora creé los cleanchanges twig en cleanchanges origin/master , por lo que está limpio, y quiero enviar mis cambios allí mientras uno se compromete con un bonito comentario de confirmación.

Cuando estoy en el maestro local, quiero cambiar a mis cleanchanges pero sin cambiar los files. Y luego puedo comprometerme.

¿Cómo puedo cambiar de twigs sin cambiar los files?

Quiero dejarlo en claro: tengo todos los cambios comprometidos en el master local. No hay cambios sin compromiso.

Editar: Me di count de que dijiste que ya habías creado algunos commits. En ese caso, use git merge --squash para hacer una única confirmación:

 git checkout cleanchanges git merge --squash master git commit -m "nice commit comment for all my changes" 

( Editar: se aplica la siguiente respuesta si tiene cambios no confirmados ).

Simplemente cambie de sucursales con los git checkout cleanchanges . Si las twigs hacen reference a la misma reference, todos los cambios no confirmados se conservarán en su directory de trabajo cuando cambie.

La única ocasión en la que tendría un conflicto es si algún file en el repository es diferente entre cleanchanges origin/master y cleanchanges . Si acabas de crear la twig, entonces no hay problema.

Como siempre, si le preocupa perder trabajo, primero haga una copy de security. Git está diseñado para no tirar el trabajo sin preguntarte primero.

Git. Cambiar a otra twig

  git checkout branch_name 

La mejor apuesta es esconder los cambios y cambiar de twig. Para cambiar twigs, necesitas un estado limpio. Así que guárdelos, busque una nueva sucursal y aplique los cambios en la nueva sucursal y compártala

Parece que hiciste cambios, comprometiéndolos a dominarlo en el path, y ahora quieres combinarlos en una única confirmación.

Si es así, desea volver a establecer la base de sus confirmaciones, aplastándolas en una única confirmación.

No estoy del todo seguro de lo que quieres exactamente, así que no te tentaré con un guión. Pero te sugiero que leas en git rebase y las opciones para "squash", y testing algunas cosas.

Otra forma, si desea crear una nueva confirmación en lugar de realizar una fusión:

 git checkout cleanchanges git reset --hard master git reset cleanchanges git status git add . git commit 

El primer restablecimiento (duro) establecerá su tree de trabajo al mismo que el último compromiso en el master .

El segundo reinicio colocará su HEAD nuevamente donde estaba, apuntando a la punta de la twig cleanchanges , pero sin cambiar ningún file. Entonces ahora puedes agregarlos y enviarlos.


Posteriormente, si desea eliminar las confirmaciones sucias que realizó desde el master (y suponiendo que aún no las ha pulsado), podría:

 git checkout master git reset --hard origin/master 

Esto descartará todas las confirmaciones nuevas y devolverá la twig master local al mismo compromiso que el del repository.