Poor execution plan leads to query time increasing dramatically
You can force it not use that index by rewriting the join condition to gtf.descendant_id = gv.garage_id + 0.  Whether it will then switch to the good plan, or just switch to a different bad plan is not something we can predict.  You will have to try it and see.
If you want use to analyze why it is making the wrong choice, you will have to show us the complete plans, not just your interpretations of them.