1. 程式人生 > 實用技巧 >介紹git clone --depth=1的用法

介紹git clone --depth=1的用法

情況一:git clone

git clone https://github.com/labuladong/fucking-algorithm

使用git視覺化命令git log --graph --oneline --all,檢視倉庫的所有歷史提交記錄(我這裡用alias取了別名glog)



說明:一般倉庫檔案不大時,我們都可以用這個方法git clone倉庫,但問題是有時候,在倉庫歷史的某次commit時,有人不小心提交了1G的檔案,雖然後面的commit中他把這個檔案刪除了,但是在.git資料夾中仍然儲存著這個檔案,所以如果我們克隆倉庫這個倉庫,會把所有的歷史協作記錄都clone下來,這樣整個檔案會非常大,其實對於我們直接使用倉庫,而不是參與倉庫工作的人來說,只要把最近的一次commit給clone下來就好了。這就好比一個產品有很多個版本,我們只要clone最近的一個版本來使用就行了。實現這個功能就需要用到git clone --depth=1命令


情況二:git clone --depth=1

git clone --depth 1 https://github.com/labuladong/fucking-algorithm.git

說明:可以看到我們只克隆下包含最近一次commit的一個分支,這樣這個專案檔案就不會很大

而如果我們想只克隆某個指定分支的最近一次commit,可以使用下面命令

git clone --depth 1  --branch english https://github.com/labuladong/fucking-algorithm.git

總結:

  • 用 git clone --depth=1 的好處是限制 clone 的深度,不會下載 Git 協作的歷史記錄,這樣可以大大加快克隆的速度
  • depth用於指定克隆深度,為1即表示只克隆最近一次commit
  • 適合用 git clone --depth=1 的場景:你只是想clone最新版本來使用或學習,而不是參與整個專案的開發工作

git clone --depth=1後拉取其他分支的方法

上面提到的 git clone --depth=1 操作只會clone一個分支english,如果我們想把其他遠端分支(如master)也克隆到本地,我們需要用下面的命令

$ git remote set-branches origin 'remote_branch_name'
$ git fetch --depth 1 origin remote_branch_name
$ git checkout remote_branch_name


Reference