git clone命令


git clone命令將儲存庫克隆到新目錄中。

簡介

git clone [--template=<template_directory>]
      [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
      [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
      [--dissociate] [--separate-git-dir <git dir>]
      [--depth <depth>] [--[no-]single-branch]
      [--recurse-submodules] [--[no-]shallow-submodules]
      [--jobs <n>] [--] <repository> [<directory>]

描述

將儲存庫克隆到新建立的目錄中,為克隆的儲存庫中的每個分支建立遠端跟蹤分支(使用git branch -r可見),並從克隆檢出的儲存庫作為當前活動分支的初始分支。

在克隆之後,沒有引數的普通git提取將更新所有遠端跟蹤分支,並且沒有引數的git pull將另外將遠端主分支合併到當前主分支(如果有的話)。

此預設組態通過在refs/remotes/origin下建立對遠端分支頭的參照,並通過初始化remote.origin.urlremote.origin.fetch組態變數來實現。

執行遠端操作的第一步,通常是從遠端主機克隆一個版本庫,這時就要用到git clone命令。

$ git clone <版本庫的網址>

比如,克隆jQuery的版本庫。

$ git clone http://github.com/jquery/jquery.git

該命令會在本地主機生成一個目錄,與遠端主機的版本庫同名。如果要指定不同的目錄名,可以將目錄名作為git clone命令的第二個引數。

$ git clone <版本庫的網址> <本地目錄名>

git clone支援多種協定,除了HTTP(s)以外,還支援SSH、Git、本地檔案協定等,下面是一些例子。

範例

以下是所支援協定的一些範例 -

$ git clone http[s]://example.com/path/to/repo.git
$ git clone http://git.oschina.net/yiibai/sample.git
$ git clone ssh://example.com/path/to/repo.git
$ git clone git://example.com/path/to/repo.git
$ git clone /opt/git/project.git 
$ git clone file:///opt/git/project.git
$ git clone ftp[s]://example.com/path/to/repo.git
$ git clone rsync://example.com/path/to/repo.git

SSH協定還有另一種寫法。

$ git clone [user@]example.com:path/to/repo.git

通常來說,Git協定下載速度最快,SSH協定用於需要使用者認證的場合。

應用場景範例

從上游克隆下來:

$ git clone git://git.kernel.org/pub/scm/.../linux.git mydir
$ cd mydir
$ make # 執行程式碼或其它命令

在當前目錄中使用克隆,而無需檢出:

$ git clone -l -s -n . ../copy
$ cd ../copy
$ git show-branch

從現有本地目錄借用從上游克隆:

$ git clone --reference /git/linux.git 
    git://git.kernel.org/pub/scm/.../linux.git 
    mydir
$ cd mydir

建立一個裸儲存庫以將您的更改發佈給公眾:

$ git clone --bare -l /home/proj/.git /pub/scm/proj.git