El pago de libgit2 no actualiza la cabeza

Tengo un repo git con 2 twigs, maestro y foo. La confirmación de la twig maestra tiene 3 files (1.txt, 2.txt, 3.txt), la confirmación de la twig foo ha eliminado 3.txt.

Llamo a git_checkout_tree con el id. Del commit al que apunta la twig foo, y el file 3.txt se elimina. Sin embargo, la cabecera no está configurada para apuntar a foo, aún apunta a maestro, y el estado de git dice "D 3.txt".

¿Qué me estoy perdiendo? ¿Cómo actualizo la cabeza para señalar a foo? Supongo que tiene algo que ver con la API de reference libgit2.

Gracias

Las funciones de pago consisten en verificar los files en el tree de trabajo, como lo indica la descripción de la function

Actualiza los files en el índice y el tree de trabajo para que coincida con el contenido del tree apuntado por treeish.

La familia de funciones de pago no tiene nada que ver con el modo de cambio de twig del command de checkout de git. Para cambiar lo que es la twig activa, necesitas hacer que HEAD apunte a esa twig, ya sea a través de las funciones git_reference_* genéricas o de la function de conveniencia git_repository_set_head() .