git-gui clone: What is the difference of each “Clone Type”?

Using the standard git-gui (v 0.20.GITGUI), there are three “Clone type” options, when you want to clone a repository:

  • Standard
  • Full Copy
  • Shared

Git-Gui clone options

  • Change Fugitive's Gstatus window height
  • Difference between git reset and git cherry-pick
  • How can the commit stats show negative total line count?
  • Git Local Repository All Steps
  • Chronological list of branches?
  • Git - push current branch shortcut
  • What is the difference between these three types?
    Is this a git-gui thing, or is there a command line equivalent?

  • github workflow - fatal: not a git repository (or any of the parent directories): .git
  • Why is git renaming these files on add?
  • Cannot pull, git cannot resolve reference ORIG_HEAD
  • How to track two version of a project in one GIT repository?
  • git reset --hard seems to ignore .git/info/exclude
  • Initializing a Repository with Google Cloud SDK
  • One Solution collect form web for “git-gui clone: What is the difference of each “Clone Type”?”

    Those messages come from commit ab08b36, gitgui-0.9.0, Sept. 2007 (ten years ago!), by Shawn O. Pearce (spearce)

    Shawn commented at the time:

    If the source repository is on the local disk we try to use a
    hardlink to connect the objects into the new clone as this can
    be many times faster than copying the objects or packing them and
    passing the data through a pipe to index-pack.
    Unlike git-clone, we stick to pure Tcl [file link -hard] operation thus avoiding the need to fork a cpio process to setup the hardlinks.

    If hardlinks do not appear to be supported (e.g. filesystem doesn’t allow them or we are crossing filesystem boundaries) we use file copying instead.

    So there is no exact git clone equivalent.
    But shared and hardlink applies only for cloning local repos and are equivalent to git clone -l and git clone --shared.
    Full will copy all pack files.

    Git Baby is a git and github fan, let's start git clone.