la restauración de la twig git después de la fusión

Si fusiono una twig de function git de nuevo en el maestro, ¿es mejor eliminar la twig?

Digamos que 6 meses después, quiero resucitar esa twig eliminada (supongamos un repository recién clonado). ¿Hay alguna manera de recrearlo fácilmente o encontrar su historia asumiendo que se fusionó con el maestro? ¿Cuál es la mejor manera de hacer esto?

Al leer otras preguntas, veo que si puedo encontrar el jefe de esa twig puedo recrearlo fácilmente, pero ¿cómo hago para hacerlo? Algunas otras respuestas de preguntas y respuestas hacen reference al command "reflog", pero esto no devuelve nada útil si he clonado recientemente el repository.

Si lo mejor es eliminar una twig una vez fusionada depende de lo que la twig signifique para su flujo de trabajo. Si se trata de una twig que se está utilizando para preparar una nueva versión, que se fusionará con la versión maestra una vez que la versión esté list, entonces querrá mantenerla. Si se trata de una twig descartable para desarrollar una única característica, generalmente es preferible eliminarla para no saturar la salida de su git branch con docenas de twigs completadas.

Si desea volver a crear una twig eliminada más adelante, todo lo que tendrá que hacer es encontrar el SHA que corresponda a su última confirmación. Si no tiene a mano el reflog, deberá intentar encontrarlo con el git log . La forma más sencilla de hacer esto sería search la fusión de commit con algo como:

 # This should match the message of the merge commit, if you kept the default. git log --grep=branch-name 

Una vez que encuentre la fusión, verá dos padres en la list:

 commit 38bf1d168e73f9fa708c334e50f256578d5c2d8f Merge: a08b280 d7725b0 

El primer padre es el estado de master antes de la fusión; el segundo es el estado de la twig que se fusionó, que es lo que desea. Recrea tu sucursal allí y compruébalo con:

 git checkout -b branch-name d7725b0 

Como nota al margen, esto solo funcionará si la fusión no fue una fusión de avance rápido . Una combinación de avance rápido solo cierra HEAD hasta la reference que se está fusionando, por lo que no crea una combinación de fusión. Puedes forzar a git a hacer siempre una nueva confirmación cuando te fusionas usando:

 git merge --no-ff branch-name 

Y si siempre quieres que este sea el caso, puedes configurarlo en tu configuration:

 git config branch.master.mergeoptions "--no-ff"