介紹git clone --depth=1的用法
阿新 • • 發佈:2020-11-19
情況一: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