成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一個讓 Git Clone 提速幾十倍的小技巧

開發 項目管理
不知道大家有沒有遇到比較大的項目,git clone 很慢很慢,甚至會失敗的那種。大家會怎么處理的呢?

[[403380]]

 本文轉載自微信公眾號「神光的編程秘籍」,作者神說要有光。轉載本文請聯系神光的編程秘籍公眾號。

不知道大家有沒有遇到比較大的項目,git clone 很慢很慢,甚至會失敗的那種。大家會怎么處理的呢?

可能會考慮換一個下載源,可能會通過一些手段提高網速,但是如果這些都試過了還是比較慢呢?

今天我就遇到了這個問題,我需要把 typescript 代碼從 gitlab 下載下來,但是速度特別慢:

  1. git clone https://github.com/microsoft/TypeScript ts 

等了很久還是沒下載完,于是我加了一個參數:

  1. git clone https://github.com/microsoft/TypeScript --depth=1 ts 

這樣速度提高了幾十倍,瞬間下載完了。

加上 --depth 會只下載一個 commit,所以內容少了很多,速度也就上去了。

而且下載下來的內容是可以繼續提交新的 commit、創建新的分支的。不影響后續開發,只是不能切換到歷史 commit 和歷史分支。

我用我的一個項目測試過,我首先下載了一個 commit:

然后做一下改動,之后 git add、commit、push,能夠正常提交:

創建新分支也能正常提交。唯一的缺點就是不能切換到歷史 commit 和歷史分支。

在一些場景下還是比較有用的:當需要切換到歷史分支的時候也可以計算需要幾個 commit,然后再指定 depth,這樣也可以提高速度。

大家有沒有想過,這樣能行的原理是什么?

git 原理

git 是通過一些對象來保存信息的:

  • glob 對象存儲文件內容
  • tree 對象存儲文件路徑
  • commit 對象存儲 commit 信息,關聯 tree

以一個 commit 為入口,關聯的所有的 tree 和 blob,就是這個 commit 的內容。

commit 之間相互關聯,而 head、branch、tag 等是指向具體 commit 的指針。可以在 .git/refs 下看到。這樣就基于 commit 實現了分支、tag 等概念。

git 就是通過這三個對象來實現的版本管理和分支切換的功能,所有 objects 可以在 .git/objects 下看到。

這就是 git 的原理。

主要理解 blob、tree、commit 這三個 object,還有 head、tag、branch、remote 等 ref。

能下載單個 commit 的原理

我們知道了 git 是通過某一個 commit 做為入口來關聯所有的 object,那如果我們不需要歷史自然就可以只下載一個 commit。

這樣依然基于那個 commit 創建新的 commit,關聯新的 blob、tree 等。但是歷史的 commit、tree、blob 因為都沒有下載下來所以無法切回去,相應的 tag、branch 等指針也不行。這就是我們下載了單個 commit 卻依然可以創建新的分支、commit 等的原理。

總結

遇到大的 git 項目的時候,可以通過添加 --depth 參數使得速度極大提升,歷史 commit 越多,下載速度提升越大。

而且下載下來的項目依然可以進行后續開發,可以創建新的 commit 和新的分支、tag,只是不能切換到歷史 commit、分支、tag。

我們梳理了 git 的原理:通過 tree、blob、commit 這三個 object 來存儲文件和提交信息,通過 commit 之間的關聯來實現分支、標簽等功能。commit 是入口,關聯所有的 tree 和 blob。

我們下載了一個 commit,就是下載了他關聯的所有 tree、blob,還有一些 refs (包括tag、branch 等),這就是 --depth 的原理。

希望大家在不需要切換到歷史 commit 和分支的場景下可以用這個技巧來提升大項目的 git clone 速度。

 

責任編輯:武曉燕 來源: 神光的編程秘籍
相關推薦

2019-03-27 13:45:44

MySQL優化技巧數據庫

2022-03-19 23:20:57

加密貨幣安全信息泄漏

2022-04-19 14:03:23

加密貨幣NFT安全

2022-10-27 07:09:34

DjangoAPIRedis

2024-04-19 14:50:00

find文件查找

2023-02-23 10:21:17

ChatGPT人工智能

2023-06-13 13:52:00

Java 7線程池

2009-05-07 09:52:21

英特爾無線吉比特聯盟無線網絡

2024-06-27 11:22:34

2021-05-07 16:02:54

Python代碼優化

2021-06-16 10:50:16

Python代碼優化

2020-09-16 16:07:34

Chrome插件瀏覽器

2017-09-26 14:56:57

MongoDBLBS服務性能

2009-12-31 16:15:42

VPN以太網接入技術

2025-06-05 04:22:00

SQL性能索引

2024-02-26 18:11:08

Docker容器鏡像

2021-09-06 10:25:27

Python代碼優化

2019-11-18 17:45:45

金蝶國際

2025-03-03 13:12:33

C#代碼Python

2025-02-28 14:00:00

結構體C#.NET 9
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级免费看 | 日韩中文一区 | 亚洲精品久久久一区二区三区 | 国产精品视频一区二区三区不卡 | 欧美国产日本一区 | 亚洲精彩免费视频 | 成人三级视频 | 久久精品国产一区二区三区 | 免费一级欧美在线观看视频 | 91亚洲精品在线观看 | 欧洲一区在线观看 | 91在线网站| 亚洲午夜精品一区二区三区 | 精品一区二区三区四区五区 | 黄毛片| www.99热.com| 国产成人高清成人av片在线看 | 久久久久久久久久爱 | 中文字幕成人av | 国产成人免费在线观看 | 亚洲永久字幕 | 欧洲色综合 | 雨宫琴音一区二区在线 | 亚洲精品国产综合区久久久久久久 | 欧美国产日韩一区二区三区 | a免费视频 | 成人a免费| 日韩三片 | 久久国产精品一区二区三区 | 中文字幕一区二区三区乱码在线 | 大香网伊人 | 在线成人福利 | 久久丝袜 | 亚洲激情一级片 | 欧美在线色| 国产高清免费 | 久久人人网 | 久久综合九九 | 久久久久亚洲精品 | 久久综合一区 | 国产精品一区二区三区久久久 |