Git只獲取部分目錄的內容

打開 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功能,全取整個項目庫,可以寫一個”*“號,但如果有排除項,必須寫”/*“,同時排除項要寫在通配符後面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章