It sounds like you should be making multiple shelves, not updating a single existing shelf.
Alternatively, create a branch for your work, and submit each incremental change as a separate changelist. Since you're working in a separate branch, your work isn't affecting others until you integrate the work from your branch back to the parent codeline.
In general, I find that as soon as I want to track more than a single set of changes (i.e., more than a single git commit), it's time to create a branch.
Perforce has a variety of features that can be used efficiently in this case; contact your Perforce administrator at your site for assistance.