系統版本:Window 10,Git 版本:2.7.1java
對於大型 Git 倉庫,每次執行 Git 命令,都須要通過漫長的等待,特別是要常常執行的 git status
命令。下面是一個例子...git
從 1.7.0 開始,Git 引入 sparse checkout(稀疏檢出)
機制,稀疏檢出機制容許只檢出指定目錄或者文件,這在大型 Git 倉庫中,將大幅度縮短 Git 執行命令的時間。github
要想只檢出指定的目錄或文件,須要在 .git/info/sparse-checkout
文件中指定出目錄或文件的路徑,下面將以一個具體例子介紹 如何使用 Git 的 sparse checkout
。spa
初始化一個倉庫,目錄結構以下圖所示:code
根目錄下有 2 個子目錄,以及一個 LICENSE
文件和 README.md
文件,每一個子目錄中各有 3 個。
將其推送到Github上新建的一個倉庫,地址是 git@github.com:liangzai-cool/git-sparse-checkout-study.git
。圖片
換一個目錄,再初始化一個 Git 倉庫,以便用稀疏檢出的方式,檢出剛纔在 Github 上新建的 git-sparse-checkout-study
倉庫:get
使用 git config core.sparseCheckout true
命令開啓 Git 稀疏檢出模式。而後編輯該倉庫目錄下的 .git/info/sparse-checkout
文件,指定檢出規則。這裏只檢出 git-sparse-checkout-study
倉庫中的 dir1
目錄下的全部文件和 根目錄下的 README.md
文件:it
添加遠程倉庫地址,並檢出:class
能夠看到,Git 只檢出了根目錄下的 README.md
文件和 dir1
目錄。配置
若是此時須要再檢出,根目錄下的 dir2
目錄,則須要將其加入到 .git/info/sparse-checkout
文件中。參照下圖中的方案:
和上面檢出 dir2
時相似:
能夠看到全部文件都已顯示出來了。
注意這裏的 echo
命令:
echo "/*" > .git/info/sparse-checkout
最後不要忘了配置 Git 的 core.sparseCheckout
爲 false
以及移除 .git/info/sparse-checkout
文件。
.git/info/sparse-checkout
中使用和 .gitignore
相同的匹配模式,例如 非匹配 !/dir2/*
以及 /*.java
等。