Skip to main content

Overview

The git command-line tool supports various subcommands such as git clone, git checkout, and so forth. The sparo command-line is intended to be a complete replacement for git.

Sparo has four kinds of subcommands:

  1. Mirrored subcommands such as sparo branch and sparo revert directly invoke the corresponding git version of that subcommand. The motivation for using mirrored subcommands is to enable Sparo to provide advice about parameters that may cause performance issues. Additionally, you can optionally configure Sparo to collect anonymized usage metrics to help you measure the experience in your repository. (Collected data is sent to your own service. It is not accessible by any other party.)

  2. Enhanced subcommands follow the same basic design as their git counterparts, but with adaptations for sparse checkout profiles and more efficient defaults. There are four enhanced commands:

    • sparo checkout
    • sparo clone
    • sparo fetch
    • sparo pull (not implemented yet; currently mirrors git pull)
  3. Renamed subcommands are the mirrored versions of the four enhanced subcommands. They are renamed to add a git- prefix:

  • sparo git-checkout
  • sparo git-clone
  • sparo git-fetch
  • sparo git-pull (not implemented yet)
  1. Auxiliary subcommands are new subcommands that provide Sparo-specific functionality. They are:
  • sparo auto-config
  • sparo init-profile
  • sparo list-profiles
  • sparo inspect (not implemented yet, will report working directory status and diagnostics)
  • sparo reclone (not implemented yet, will efficiently revert to a clean clone)

Mirrored commands

Each subcommand has its own page in this documentation, except for the mirrored commands which are already covered by the Git documentation. For convenience, the most essential "porcelain" subcommands are listed in the table below, however every Git subcommand is supported.

SubcommandSummary
git addAdd file contents to the index
git amApply a series of patches from a mailbox
git archiveCreate an archive of files from a named tree
git bisectUse binary search to find the commit that introduced a bug
git branchList, create, or delete branches
git bundleMove objects and refs by archive
git checkoutSwitch branches or restore working tree files
git cherry-pickApply the changes introduced by some existing commits
git citoolGraphical alternative to git-commit
git cleanRemove untracked files from the working tree
git cloneClone a repository into a new directory
git commitRecord changes to the repository
git describeGive an object a human readable name based on an available ref
git diffShow changes between commits, commit and working tree, etc
git fetchDownload objects and refs from another repository
git format-patchPrepare patches for e-mail submission
git gcCleanup unnecessary files and optimize the local repository
git gitkThe Git repository browser
git grepPrint lines matching a pattern
git guiA portable graphical interface to Git
git initCreate an empty Git repository or reinitialize an existing one
git logShow commit logs
git maintenanceRun tasks to optimize Git repository data
git mergeJoin two or more development histories together
git mvMove or rename a file, a directory, or a symlink
git notesAdd or inspect object notes
git pullFetch from and integrate with another repository or a local branch
git pushUpdate remote refs along with associated objects
git range-diffCompare two commit ranges (e.g. two versions of a branch)
git rebaseReapply commits on top of another base tip
git resetReset current HEAD to the specified state
git restoreRestore working tree files
git revertRevert some existing commits
git rmRemove files from the working tree and from the index
git shortlogSummarize 'git log' output
git showShow various types of objects
git sparse-checkoutReduce your working tree to a subset of tracked files
git stashStash the changes in a dirty working directory away
git statusShow the working tree status
git submoduleInitialize, update or inspect submodules
git switchSwitch branches
git tagCreate, list, delete or verify a tag object signed with GPG
git worktreeManage multiple working trees
. . ....and many other subcommands including any custom commands found in the shell PATH