At work, we are using SVN, CVS, and GIT because there any many projects that were started at various times. Anyway, a common sequence that occurs is as follows:
Working on task A, making changes to project
Has new task B, some bug or functionality needs to be done on project, independent of task A but may affect same set of files
Check in task B
Check in task A
Unfortunately, what I do at this time is two maintain 2 working copies of each project. So I can always work on task B from a clean copy. As you can imagine, this is wasteful and also, does not scale well (task C, D, E, etc.)
For each of these versioning systems, are there commands that can help me do the following:
"Save" task A, reverting working copy to current repository
Work on task B, check in changes
"Restore" task A changes back to working copy