It's been my experience that "jumping around", or more clearly "Jumping randomly around" is a symptom of a more urgent problem, one of poorly stated goals.
If you have a very clear idea, in writing, whether post-it notes on the side of your monitor or in formal specs attached to your issue tracker of choice, then you almost always know exactly what to work on next. If you are always working on one of those next things, then you are going to have a good chance of succeeding with the project.
If, on the other hand, your idea of what's the next most important thing is hazy, it's much harder to actually find a thing to work on that actually addresses the problem your project aims to solve, or more specifically, it's much less cut-and-dry when deciding that this particular change is complete and solves a particular issue.
If you have a goal like "make the UI easier to use", well, it's just about impossible to say what the next fix aught to be, or when you have finished "fixing the UI" and can move on to something else. If, on the other hand, you have a goal like "combine these drop-downs into a search field with autocomplete" and "'foo' should auto complete to 'Fooly Brand Baring'", its totally obvious to when you've fixed that problem.
Don't write any code until you have a really clear idea of when to stop, and if you don't have any clear ideas, work on getting one of those instead of starting another branch for some general feature.
If you do have such a good spec of work (even for personal projects), then "jumping around" is totally fine and safe and useful.