split versions before checking if installed
use `git pull` to update work tree.

`git reset --hard` will not update work tree if the `revision` is a ref.