Git – Comience de nuevo mientras conserva el trabajo anterior

Me disculpo si esto es trivial pero he pasado la mayor parte de la noche buscando una solución y estoy un poco atascado. He estado usando Git para el control de versiones de un proyecto para el que actualmente soy el único desarrollador, y después de pasar mucho time trabajando con un montón de código, me gustaría empezar desde cero en mi twig principal, pero "archivar" todo mi trabajo previo en la twig principal actual y otras dentro de mi repository existente. Actualmente tengo un montón de confirmaciones en la twig principal, seguidas de una segunda serie de confirmaciones en la twig A; se ve algo como esto:

A: C4-C5-C6 / master: C0-C1-C2-C3 

Me gustaría anteponer una confirmación vacía al proyecto (mi confirmación inicial actual no está vacía), almacenar mi historial actual en un set de twigs que conservan la jerarquía y luego comenzar a trabajar fuera de esa confirmación vacía con código nuevo. Eso se vería así:

  A: C4-C5-C6 / oldcode: C0-C1-C2-C3 / master: C0' (empty)-C7... 

Espero que eso tenga sentido, tengo la sensación de que necesitaría algún cambio de base, pero no estoy exactamente seguro de cómo eso funcionaría y no quiero perder lo que ya tengo por crash. ¡Cualquier ayuda sería muy apreciada, gracias!


EDITAR: Me acabo de ocurrir que podría simplemente clonar la copy de la twig maestra actual a una nueva twig en una twig anterior, confirmar, y luego borrar mi directory de trabajo en la twig maestra y confirmar nuevamente. Esto conserva la línea de time real y mi código anterior, y es probablemente más "adecuado". ¿Tiene sentido? Se vería algo así como:

  A: C4-C5-C6 / master: C0-C1-C2-C3-C8(empty)-C9... \ oldcode: C7 

¡Gracias!

Probablemente haya muchas forms de hacerlo, pero lo haría así (según su diagtwig):

En su twig master actual, haga que git checkout -b oldcode < git checkout -b oldcode crea y comtesting una nueva twig llamada oldcode basada en fuera de su twig principal actual. (Por lo tanto, en este momento, como acaba de crear el oldcode , este y el master serán los mismos. Puede confirmarlo ejecutando el git diff master oldcode )

A continuación, simplemente regrese a su twig master simplemente haciendo git checkout master .

Ahora puedes hacer cualquier commit en tu twig master para hacerla divergir (ser diferente) de la twig oldcode .

Así de fácil.

Realmente no debe codificar o "trabajar" en su twig principal, de esa forma evitará tener que hacer esto. O evite potencialmente tener errores que lo convierten en su entorno de producción / código en vivo. Separe la twig maestra de las twigs de "temas" en las que codifique y luego integre / git merge sus cambios nuevamente en el dominio una vez que lo haya hecho yo … ¡Espero que esto ayude!

Desde git 1.7.2, puede usar git checkout --orphan <new_branch_name> para crear twigs que no compartan ningún historial con las twigs existentes. Esta respuesta tiene detalles sobre cómo puede usarlo. Por lo tanto, simplemente cambie el nombre de todas sus sucursales existentes usando git branch -m , luego use git checkout --orphan para crear las nuevas.