El mejor enfoque para probar cosas nuevas en las fonts sin dañar nada

Estuve trabajando con Git por un time (aunque no es un experto) y esta pregunta nunca viene a mi mente, pero ahora está dando vueltas.

Digamos que tengo un repository con tres twigs más master :

  • dominar
  • branch_1
  • branch_1_devel
  • branch_1_devel_test

No estoy usando master para que branch_1 convierta y se comporte como master . Generalmente y como debería ser, realizo un nuevo desarrollo en branch_1_devel y luego branch_1_devel esos cambios cuando están listos en branch_1 .

Ahora quiero probar una nueva funcionalidad, así que he creado una nueva twig branch_1_devel_test . Después de pagar en esa sucursal, realicé cambios en un file llamado file1 .

Es necesario hacer algo con más prioridad en branch_1_devel por lo que debo branch_1_devel esa twig y editar el mismo file1 . Después de todo, he agregado el file, branch_1 los cambios y luego me branch_1 en branch_1 .

Luego vuelvo a branch_1_devel_test porque quiero continuar probando donde lo dejé en file1 .

Teniendo este escenario (si no entiendes, házmelo saber y trataré de ser más claro) algunas preguntas:

  • si selecciono los cambios de branch_1_devel ¿el branch_1_devel file1 entrará en conflicto? lo que significa que perderé mis cambios anteriores?
  • ¿Debo realizar los cambios realizados en branch_1_devel_test tan pronto como branch_1_devel_test pago en otra sucursal? ¿Qué significará un problema si trato de realizar el pago en una nueva sucursal sin comprometer los cambios en la actual?

La idea detrás de todo esto es: quiero probar algo, pero no quiero introducir cambios en branch_1_devel ni en branch_1 .

Actualizar

Esta es una pequeña testing que hice para comprender cómo se comporta Git.

 $ git branch master branch_1 * branch_1_devel $ git checkout -b branch_1_devel_test Switched to a new branch 'branch1_devel_test' $ git branch master branch_1 branch_1_devel * branch_1_devel_test 

Ahora estoy en branch_1_devel_test así que he creado un nuevo file vacío

 $ git status # On branch branch_1_devel_test # Untracked files: # (use "git add <file>..." to include in what will be committed) # # application/controllers/AdminconsoledemoController.php # nothing added to commit but untracked files present (use "git add" to track) 

Vuelve a branch_1_devel

 $ git checkout branch_1_devel Switched to branch 'branch_1_devel' $ git status # On branch branch_1_devel # Untracked files: # (use "git add <file>..." to include in what will be committed) # # application/controllers/AdminconsoledemoController.php # nothing added to commit but untracked files present (use "git add" to track) 

¿Por qué si el file fue creado en branch_1_devel_test está siendo rastreado en branch_1_devel ? Eso es exactamente por lo que estoy tratando de evitar porque tendré que comprometer los cambios antes de extraer algo del origen en branch_1_devel

Si entiendo correctamente … si creas un file en branch_1_devel_test sin comprometerlo, será independiente de las twigs (no será parte del repository). Esto significa que cuando vuelva a cambiar a branch_1_devel el file seguirá allí como un file sin seguimiento. Si confirma el file en branch_1_devel_test el file será parte del repository y desaparecerá cuando cambie la twig.

Si desea evitar tener el file por ahí, puede usar el mecanismo de stash . En realidad, no estoy seguro de que puedas esconder files sin seguimiento. De todos modos, lo que estás tratando de hacer se ve raro: si creas un file que vale la pena save, debes hacerlo. Si luego, en el futuro, ya no lo necesitarás, puedes borrarlo (por supuesto, si es un file grande, las cosas son diferentes …)

Puede usar git worktree para mantener el desarrollo en diferentes twigs sin tener que comit ni stash comit . Permite verificar twigs en sus propios directorys de trabajo de forma independiente. Ejemplo:

 git worktree add ../project-branch_1 branch_1 

Sin embargo, el command worktree se ha introducido en Git 2.5 y todavía se considera experimental:

El pago múltiple en general sigue siendo experimental, y el soporte para submodules está incompleto. NO se recomienda realizar varias comprobaciones de un superproyecto.

Nunca he tenido problemas, incluso con submodules, salvo la necesidad de eliminar manualmente los directorys de trabajo. Otros enlaces: ¿Para qué usaría git-worktree? , notas de github worktree .