A trick to keep in mind when garrisoning with a ranged unit:
Garrisoning costs no movement points for a unit. Thus, you can garrison and ungarrison a unit infinitely in a turn. Moreover, a city using its attack in a turn does not consume any move points for the garrisoned unit. So at the start of your turn, garrison the ranged unit in the city if it's not already, use the now-boosted city's attack, then ungarrison the unit and use its own ranged attack. The difference isn't huge (usually just a couple extra points of attack power), but you can pick up an extra point of damage on the target for free.