SmartGit is extremely useful, i'd recommend something like that instead of using the CLI if you have trouble.
The working directory
The "index" or staging area
The local head
The local copy of the remote head
The actual remote head
Git contains commands (or options on commands) for moving and comparing content between all of these locations.