class Rugged::Repository

def checkout(target, options = {})

options - Options passed to #checkout_tree.
target - A revparse spec for the branch, reference or commit to check out.

Checkout the specified branch, reference or commit.
def checkout(target, options = {})
  options[:strategy] ||= :safe
  options.delete(:paths)
  return checkout_head(**options) if target == "HEAD"
  if target.kind_of?(Rugged::Branch)
    branch = target
  else
    branch = branches[target]
  end
  if branch
    self.checkout_tree(branch.target, **options)
    if branch.remote?
      references.create("HEAD", branch.target_id, force: true)
    else
      references.create("HEAD", branch.canonical_name, force: true)
    end
  else
    commit = Commit.lookup(self, self.rev_parse_oid(target))
    references.create("HEAD", commit.oid, force: true)
    self.checkout_tree(commit, **options)
  end
end