If I understand what you want to do, the answer is branching. In a lot of older version control systems, branching and merging is expensive and/or painful. In Git, it's fast, easy and fun.
Let's say you're working on the "master" branch and you decide to implement feature X. You get a good start on it, but then your boss tells you that feature Y needs implemented as soon as possible. Phil in the next cube over volunteers to finish feature X while you do feature Y. Here's what you do:
Make and switch to a new branch for your in-progress feature X work, committing your changes:
$ git checkout -b feature_x
$ git add filethatyouchanged.cc
$ git commit -m 'partial implementation of feature X'
Push it to a server that Phil can see:
$ git push origin feature_x
Go back to the master branch (which has not changed):
$ git checkout master
You might also want to proactively create a new branch for feature Y:
$ git checkout -b feature_y
Phil can now pull down your feature X work and pick up where you left off:
phil$ git fetch origin
phil$ git checkout -t origin/feature_x