Git 的 sparse checkout 跟 shallow clone/pull
想下載個大倉庫到本地,但是zip文件老是出錯而且下載時間長,遂使用此方法完成獨立的文件夾下載。
步驟
(2~4順序可換):
1.建立一個空的git 本地倉庫:
$ git init new.project && cd new.project
2.在本地倉庫里面啟用sparse-checkout:
$ git config core.sparseCheckout true
3.設定你要checkout 哪些文件夾(如/xxx/*表示xxx文件夾下所有文件)(也可以用vim直接打開 .git/info/sparse-checkout寫入)
$ echo '/xxx/*' >> .git/info/sparse-checkout
4.設定remote (要從哪里clone/pull?):
$ git remote add origin git://github.com/xxx/xxx.git
5.然后就可以開始pull 了(這邊可以加上后面說的shallow pull,加上--depth=n
$ git pull origin 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 "/xxx/*" >> .git/info/sparse-checkout
$ echo "/xxx" >> .git/info/sparse-checkout
$ git checkout master
要關閉 sparse checkout功 能,僅僅修改設置,將core.sparsecheckout設為false是不生效的,需要修改 .git/info/sparse-checkout 文件,用一個”*“號替代其中的內容,然后執行 checkout 或 read-tree 命令。