You bring up a good second point here @dylin. ````git checkout branch```` could be ambiguous especially if a local branch with the same name already exists. On the other hand ````git checkout remote/branch```` should always work.

I was going to suggest that we simply assume that remote is origin when its not provided but this will not work for tags/SHAs. However I do not like the idea of forcing the user to type remote/branch for the most common use case.

As long a @bryanhiggins is OK with it and its documented, I'm going to recommend we go with forcing the user to specify remote/branch and simply using git checkout. It seems the cleanest solution and will support any possible work done to the existing repo (even changing remote names for whatever reason).