Git fusionar conflicto | cómo administrar las twigs para aislarlas, pero también usar código dependiente entre ellas

  1. Tengo una twig maestra.
  2. Issue1 una twig llamada Issue1 desde master. Después de completar Issue1 , creé otro problema llamado Issue2 desde el maestro, tenga en count que no lo Issue1 encima de Issue1 .
  3. La razón del paso 2 es que, al time que aumentan los problemas en la producción, puede haber una condición en la que no tenga que fusionar el código del Issue1 pero si lo creo encima de Issue1 podría haber un problema mientras Issue2 , entonces los commits de ambas twigs serán empujados a la producción (master).
  4. Es por eso que estoy creando cada problema desde la twig principal para hacer que cada tema se separe uno del otro.
  5. Pero el problema está en trabajar en Issue1 file y creé methods comunes o algo que también se requiere para Issue2 . Ahora, en ese caso, no tengo un código de Issue1 .

Entonces, desde arriba, es bueno crear Issue2 sobre Issue1 pero de esa manera mi requisito no está cumpliendo su propósito. Leí sobre la recolección alegre. No estoy seguro si es aplicable aquí.

Además, si modifiqué index.php dentro de Issue1 y agregué el enlace y en Issue2 modifiqué el mismo file y agregué otro, habrá conflicto. Así que no puedo evitarlo, aunque sabía que había modificado este file en ambas twigs. Tengo que lidiar con la resolución de los conflictos, no puedo evitarlo hasta que lo cree sobre Issue1 , pero mi segundo propósito sufrirá En tal caso.

¿Cuál sería la mejor manera de resolver esto? Quiero que mis dos propósitos se resuelvan.

Considera hacer 3rd branch, fe Feature1 o Common1 , y escribir código común allí. Luego puede fusionar esta twig tanto en Issue1 como Issue2 (y master, ofc).

Creo que es muy git-way – el código relacionado con el tema está en las twigs de Issue y el código común está en la twig Common.

Edit1: la estructura final que propongo:

  master | Common / \ Issue1 Issue2 

En caso de que ya tengas problemas, puede verse así:

  master / | \ Issue1 Common1 Issue2 | / | \ / Merge | Merge | | | Issue1 updated Issue2 common 

Edit2: Otra explicación.

Tienes maestro

 var x = 1; var y = 2; print(x+y); 

digamos que su Issue1 debería verse así:

 var x = 1; var y = 3; printLine(x+y); function printLine (x) { return print(x + 'line'); } 

y su Issue2 debería verse así:

 var x = 1; var y = 4; printLine(x+y); function printLine (x) { return print(x + 'line'); } 

entonces haces la twig Common1 así:

 var x = 1; var y = 2; printLine(x+y); function printLine (x) { return print(x + 'line'); } 

Entonces, su flujo de trabajo se verá así:

 git checkout master git checkout -b common1 //make changes as in Common1 git commit -am common1 git checkout issue1 git merge common1 git checkout issue2 git merge common1 //then you can work on issues. fe making changes in issue1 git checkout issue1 //code, code git commit -am issue1 //if you want to update common methods git checkout common1 //update git commit -am updated-common1 git checkout issue1 git merge common1 git checkout issue2 git merge common2