what I like to do is a join that is called the Russian join. There’s a link to a website illustrating the method here . Its kind of hard to get it lined up exactly right, but usually when I do it, I don’t have to get it exactly on an edge or anything. Maybe try knitting to the end of the row, marking where on the yarn the end of the row is, frogging back a few stitches, and then doing the join.
If you are using wool you can also fold each color back on itself and then felt the strands, it has the same effect.
If you’re braver than me, you can tie a loose knot, leaving the ends free, and then later come back, untie the knot, and weave the ends in. I’m paranoid that I’ll get the knot too tight or I’ll mess up the weave in, or I’ll pull out stitches or something.