code: def _get_commit(self):
          
          obj = self._get_object()
          if obj.type == 'tag':
              obj = obj.object
          # END dereference tag
  
          if obj.type != Commit.type:
              raise TypeError("Symbolic Reference pointed to object %r, commit was required" % obj)
          # END handle type
          return obj
docs: :return:
              Commit object we point to, works for detached and non-detached
              SymbolicReferences. The symbolic reference will be dereferenced recursively.