Git如何檢出指定目錄或文件


系統版本:Window 10,Git 版本:2.7.1

對於大型 Git 倉庫,每次執行 Git 命令,都需要經過漫長的等待,特別是要經常執行的 git status 命令。下面是一個例子...

圖片加載中...

從 1.7.0 開始,Git 引入 sparse checkout(稀疏檢出) 機制,稀疏檢出機制允許只檢出指定目錄或者文件,這在大型 Git 倉庫中,將大幅度縮短 Git 執行命令的時間。

要想只檢出指定的目錄或文件,需要在 .git/info/sparse-checkout 文件中指定出目錄或文件的路徑,下面將以一個具體例子介紹 如何使用 Git 的 sparse checkout

准備遠程倉庫

初始化一個倉庫,目錄結構如下圖所示:

圖片加載中...

根目錄下有 2 個子目錄,以及一個 LICENSE 文件和 README.md 文件,每個子目錄中各有 3 個。
將其推送到Github上新建的一個倉庫,地址是 git@github.com:liangzai-cool/git-sparse-checkout-study.git

為Git配置稀疏檢出

換一個目錄,再初始化一個 Git 倉庫,以便用稀疏檢出的方式,檢出剛才在 Github 上新建的 git-sparse-checkout-study 倉庫:

圖片加載中...

使用 git config core.sparseCheckout true 命令開啟 Git 稀疏檢出模式。然后編輯該倉庫目錄下的 .git/info/sparse-checkout 文件,指定檢出規則。這里只檢出 git-sparse-checkout-study 倉庫中的 dir1 目錄下的所有文件和 根目錄下的 README.md 文件:

圖片加載中...

檢出

添加遠程倉庫地址,並檢出:

圖片加載中...

可以看到,Git 只檢出了根目錄下的 README.md 文件和 dir1 目錄。

如果此時需要再檢出,根目錄下的 dir2 目錄,則需要將其加入到 .git/info/sparse-checkout 文件中。參照下圖中的方案:

圖片加載中...

關閉稀疏檢出

和上面檢出 dir2 時類似:

圖片加載中...

可以看到所有文件都已顯示出來了。
注意這里的 echo 命令:

echo "/*" > .git/info/sparse-checkout

最后不要忘了配置 Git 的 core.sparseCheckoutfalse 以及移除 .git/info/sparse-checkout 文件。

.git/info/sparse-checkout 中使用和 .gitignore 相同的匹配模式,例如 非匹配 !/dir2/* 以及 /*.java 等。

原文鏈接http://xueliang.org/article/detail/20160819001000543


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM