打開 sparse checkout 功能
注意打開此功能同步代碼後,其它部分代碼將從本地庫中刪除 。
如果本地還沒有建版本庫,要用這個功能,先進入要放版本庫的目錄,在命令行執行幾條命令
$ git init <project>
$ cd <project>
$ git remote add origin ssh://<user>@<repository's url>
$ git config core.sparsecheckout true
$ echo "path1/" >> .git/info/sparse-checkout
$ echo "path2/" >> .git/info/sparse-checkout
$ git pull origin master
第一條命令git init <project>
,先建立一個空的版本庫,用實際的目錄名替代。
第二條命令cd <project>
,進入創建的新的版本庫的目錄。
第三條命令git remote add origin ssh://<user>@<repository's url>
,添加遠程庫的地址。
第四條命令git config core.sparsecheckout true
,打開sparse checkout功能。
第五第六條命令echo "path1/" >> .git/info/sparse-checkout
,添加2個目錄到checkout的列表。路徑是版本庫下的相對路徑,也可以用文本編輯器編輯這個文件。
第七條命令git pull origin master
,拉取遠程的 master 分支,也可以拉其他分支。
如果只拉取最近一次的變更,忽略以前的變更記錄,在拉取時可以加參數depth,如git pull --depth=1 origin master
(淺克隆)
如果以後修改了 .git/info/sparse-checkout,增加或刪除部分目錄,可以執行如下命令重新Checkout
$ git checkout master
或執行以下命令:
$ git read-tree -mu HEAD
如果本地已經建了版本庫,要使用這個功能,可以進入版本庫的目錄,執行以下命令
$ git config core.sparsecheckout true
$ echo "path1/" >> .git/info/sparse-checkout
$ echo "path2/" >> .git/info/sparse-checkout
$ git checkout master
要關閉 sparse checkout功 能,僅僅修改設置,將core.sparsecheckout設爲false是不生效的,
需要修改 .git/info/sparse-checkout 文件,用一個”*“號替代其中的內容,然後執行 checkout 或 read-tree 命令。
sparse-checkout 文件設置
子目錄的匹配
在 sparse-checkout 文件中,如果目錄名稱前帶斜槓,如/docs/
,將只匹配項目根目錄下的docs目錄,如果目錄名稱前不帶斜槓,如docs/
,其他目錄下如果也有這個名稱的目錄,如test/docs/
也能被匹配。
而如果寫了多級目錄,如docs/05/
,則不管前面是否帶有斜槓,都只匹配項目根目錄下的目錄,如test/docs/05/
不能被匹配。
通配符 “*“ (星號)
在 sparse-checkout 文件中,支持通配符 “*“,如可以寫成以下格式:
*docs/
index.*
*.gif
排除項 “!” (感嘆號)
在 sparse-checkout 文件中,也支持排除項 “!”,如只想排除排除項目下的 “docs” 目錄,可以按如下格式寫:
/*
!/docs/
要注意一點:如果要關閉sparsecheckout功能,全取整個項目庫,可以寫一個”*“號,但如果有排除項,必須寫”/*“,同時排除項要寫在通配符後面。