Here are 2 different questions but I think they are related.
When using git how do I find which changes I have committed locally but haven't yet pushed to a remote branch? I'm looking for something similar to the Mercurial command "hg outgoing"
When using git how do I find what changes a remote branch has prior to doing a pull? I'm looking for something similar to the Mercurial command "hg incoming"
Also for 2. is there a way to see what is available and then cherry-pick the changes I want to pull?