2013-04-05 59 views
7

我有這樣的目錄結構:Git的稀疏結賬簡單的Web部署

../dir1/dev/project1/... 
      /project2/... 
      /project3/... 
     /production/ 

我有DEV(及其所有子目錄)簽入的Git(和github上)。一切正常。

我想使用github通過檢出(或拉,或其他)到我的生產目錄中來部署project2。 (具體而言,我想看看標籤。)所以這將導致../dir1/production/project2

我不是一個混帳專家,但已經在網上閱讀了一堆,似乎'稀疏結帳'就是我後。我試過hereherehere的說明的各種組合。

基本上我做的事:

mkdir <repo> && cd <repo> 
git init 
git remote add –f <name> <url> 
git config core.sparsecheckout true 
echo /project2/ >> .git/info/sparse-checkout 

當我做git pull <remote> TAGNAME我得到fatal: The remote end hung up unexpectedly

當我做git checkout TAGNAME我得到error: Sparse checkout leaves no entry on working directory

我在做什麼錯?

回答

9

啊哈 - 解決了它。問題在於,通過執行init創建一個空的存儲庫,所以我無法進行結帳。 (我不知道爲什麼拉不起作用。)

而是,做一個克隆,但使用-n參數「no checkout」。這克隆了git存儲庫,但將工作樹留空。然後設置稀疏結帳。然後檢查你想要的。

要白衣:

cd <parentdir> 
git clone -n <url> 
cd <repo_dir> 
git remote add –f <name> <url> 
git config core.sparsecheckout true 
echo /<foldername>/ >> .git/info/sparse-checkout 
git checkout <tagname>