modificar una twig git en una secuencia de commands en funcionamiento sin sobreescribir la última versión

Recientemente comencé a usar git para el control de versiones en mis scripts de Python (usando git, via magit y Python en emacs) y no estoy seguro de entender cómo ramificar correctamente.

Supongamos que hago un script llamado test.py y esto está comprometido con la twig principal de mi repository de git. Este script puede funcionar bien, pero necesito hacer algunos cambios sustanciales (por ejemplo, vaya a una versión 2.0 para master.py). Ahora, test.py es importante ya que se usa continuamente en tareas cron, así que quiero asegurarme de que mientras estoy trabajando en test.py 2.0 puedo seguir llamando al original.

Lo que creo que debería hacer es desviarme del maestro (llamar a la nueva twig "versión2") y continuar trabajando en las actualizaciones. Sin embargo, lo que he notado es que cuando guardo test.py en la twig version2 sobrescribo la versión guardada de test.py en el disco (es decir, ahora mi trabajo cron llamará a la versión 2 no terminada de test.py) ¿tener sentido?

Mi pregunta es: ¿Puedo seguir trabajando en test.py en la twig de la versión 2 sin sobreescribir el script test.py que está llamando mi trabajo cron? Supongo que no sé cómo manejar esta situación.

Probablemente no deberías llamar automáticamente un file que desarrollas. Una forma de resolver su problema es usar git worktree para tener un tree de trabajo separado para su twig de versión2, dejando intacto su tree de trabajo master que su tarea cron llama.

Tu suposition de que necesitas derivarte es correcta. Esto significa que puede tener dos versiones del file y puede usarlas cuando lo necesite. Después de realizar los cambios en test.py , puede crear una nueva bifurcación utilizando git checkout -b [new branch name] . Si necesita volver a la versión original, simplemente vuelva a realizar la comprobación master ( git checkout master ).

Una vez que esté satisfecho con los cambios en la nueva versión del file y esté listo para sobrescribir el original, puede fusionar esa twig en maestra:

 git checkout master git merge [new branch] git branch -D [new branch] --this deletes the 'version 2' branch assuming you no longer need it.