Your version control history situation:
- Commit 1 : changed misc stuff
- Commit 2 : changed foo.cs and bar.cs
- Commit 3 : change misc stuff
- Commit 4 : changed foo.cs
Your goal is to undo the changes to file foo.cs done at commit 2.
In (tortoise) svn this would be done like so...
- Right click foo.cs, choose Show Log
- Log Browser window appears showing commit history filtered to only contain commits which modified the file foo.cs (aside: SourceTree also lakes a convenient way to show a sequential log of changes which affect a path within a repo).
- Selecting commit 2 shows all files changed in the lower window
- Right clicking on foo.cs in the bottom window shows context option 'revert changes from this revision'.
Note that this is distinctly different from right clicking on the entire commit within the upper window and choosing the same option 'revert changes from this revision' as one will revert all files and the other only the currently selected files.
SourceTree / Git appears to call this similar feature a 'reverse commit'.
However it only shows this as a context menu option for COMMITS. What I want is the ability to reverse commit the currently selected file(s) in the lower window (when a commit is selected in the upper window).