class Git::Base

def object(objectish)

an appropriate object for that type
on the objectish and determine the type of the object and return
@git.object calls a factory method that will run a rev-parse

still return a Git::Object::Commit object.
just for readability. If you call @git.gtree('HEAD') it will
you can also call @git.gtree('tree'), but that's
returns a Git::Object of the appropriate type
def object(objectish)
  Git::Object.new(self, objectish)
end