Git——克隆部分文件

在進行項目開發的時候,有時候會有這樣的需求那就是:咱們只但願從Git倉庫裏取指定的文件或者文件夾出來。在SVN裏面,這很是容易實現,由於SVN基於文件方式存儲,而Git倒是基於元數據方式分佈式存儲文件信息的,它會在每一次Clone的時候將全部信息都取回到本地,即至關於在你的機器上生成一個克隆版的版本庫。所以在Git1.7.0之前,這沒法實現,可是幸運的是在Git1.7.0之後加入了Sparse Checkout模式,這使得Check Out指定文件或者文件夾成爲可能。css

具體實現以下:html

1 $mkdir project_folder
2 $cd project_folder
3 $git init
4 $git remote add -f origin <url>

上面的代碼會幫助你建立一個空的本地倉庫,同時將遠程Git Server URL加入到Git Config文件中。 
接下來,咱們在Config中容許使用Sparse Checkout模式:git

1 $git config core.sparsecheckout true

接下來你須要告訴Git哪些文件或者文件夾是你真正想Check Out的,你能夠將它們做爲一個列表保存在.git/info/sparse-checkout文件中。 
例如:github

1 $echo 「libs」 >> .git/info/sparse-checkout
2 $echo 「apps/register.go」 >> .git/info/sparse-checkout
3 $echo 「resource/css」 >> .git/info/sparse-checkout

最後,你只要以正常方式從你想要的分支中將你的項目拉下來就能夠了:flask

1 $git pull origin master

具體您能夠參考Git的Sparse checkout文檔: http://schacon.github.io/git/git-read-tree.html#_sparse_checkoutapp

一個完整的例子:分佈式

 1 #目標,獲取https://github.com/pallets/flask.git開源項目的examples/flaskr文件見內容作測試
 2 mkdir gitSparse
 3 cd gitSparse/
 4 git init
 5 git remote add -f origin https://github.com/pallets/flask.git
 6 ls
 7 git config core.sparsecheckout true
 8 echo "examples/flaskr" >> .git/info/sparse-checkout
 9 cat ./.git/info/sparse-checkout 
10 git pull origin  master 

 

參考資料:測試

1. http://blog.csdn.net/linlzk/article/details/49019787url

2. http://www.cnblogs.com/xilifeng/p/5225666.html  spa

相關文章
相關標籤/搜索