The answer is simple, make sure that every one joins ahead of time so that you can assign them to the city that you want, and is there on time to Garrison the camp/fort/city that they should be in.

If they did not join before the fighting starts and your Guild is fighting in more that one city then they get put wherever the game decides (random) since once the fighting starts you can no longer assign people to a specific city.

If they are late, after the garrison button goes away, they they assigned wherever the game decides (random) since there is no way to garrison.

What is there to fix?