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

  • How to verify a git merge contains no extra changes?
  • LDAP Groups and Git Source Code Hosting
  • In a git post-commit hook how do I get a list of the files that were changed?
  • What is the difference between these `git fetch` syntaxes?
  • Git workflow for compile machine
  • Windows git: Fatal: TaskCanceledException encountered
  • What is the difference between these three types?
    Is this a git-gui thing, or is there a command line equivalent?

  • Unable to check code into GitHub
  • git pull origin master returns fatal: invalid refspec
  • jekyll GitHub Metadata error
  • How to unversion an entire folder?
  • VCS independent diff
  • Is there a way to use private git repository with Berkshelf
  • 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.