用git按需下載github倉庫部分/單個文件夾的方法


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 命令。

參考


免責聲明!

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



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