Git cambia el origen de una nueva twig a un compromiso anterior de la twig fuente

Tengo una línea principal de twig con historial de compromiso 1-> 2-> 3-> 4-> 5. Creé una testing de sucursal local desde la línea principal usando

git checkout -b "test" 

Hice algunas confirmaciones en la twig de testing decir 6-> 7.

Esto se mapea desde el encabezado de la línea principal, que es commit no 5 (es decir, 5-> 6-> 7).

Quiero que la twig de testing asigne el encabezado de la línea principal desde el compromiso n. ° 1. (es decir, 1 -> 6 – 7)

Como hacer esto ?

Puedes usar rebase --onto para hacer eso.

 >>> git checkout test >>> git checkout -b test2 # [optional] in case you have already pushed the test branch to remote, you can use test2 branch instead >>> git rebase --onto <commit_id_of_1> <commit_id_of_5> <commit_id_of_7> 

Ejemplo:-

 >>> git checkout test >>> git log --oneline c05a4af commit 7 b0e5f24 commit 6 74c9673 commit 5 ... 6712bec commit 1 >>> git rebase --onto 6712be 74c9673 c05a4af 

documentation de rebase

Usando Cherry Pick

 git checkout commit_id_7 git checkout -b repair new_test_branch git cherry-pick commit_id_6 git cherry-pick commit_id_1 git checkout test git reset --hard commit_id_7 git merge repair git push --hard origin test 

Nota: Git rebase y cherrypick son soluciones peligrosas pero potentes que solo deben usarse como última opción