2015-05-14 119 views
1

的根,我有幾個文件夾在我的Git回購:的Git克隆一個子目錄,在當前目錄

folder1/suba 
folder2/subb 
folder3/subc 

並在本地,我有我的Web服務器上的公用文件夾。

http://domain.com/ 

指向文件夾

~/apps/appname/public 

我想有效地做folder3/subc的混帳克隆到服務器上的文件夾public。現在我知道稀疏結帳,但保留了文件夾層次結構(如~/apps/appname/public/folder3/subc)。

我不希望那個層次結構,並希望檢查folder3/subc的內容直接進入公用文件夾。

這可能嗎?

+0

本地做一個git克隆,然後將文件夾移動到網絡服務器 –

+1

我需要定期通過git pull來更新服務器上的代碼,移動它將會破壞Git功能。 – Vallieres

+0

創建一個新目錄,然後將其複製到它 –

回答

0

您無法克隆子目錄。但是,您可以創建淺層克隆。這種淺層克隆僅適用於部署。

含義你不能使用這些克隆提交,拉取,推送和重新綁定。淺克隆幫助你減少克隆大小足跡

1

如果~/apps/appname/public是一個共享文件系統,並且您的Web服務器不會改變檢出的文件,也可以保持其內容的專用索引,只需使用git read-tree -um更新從任何文件系統提交你喜歡:

( 
    export GIT_INDEX_FILE=/path/to/repo/.git/appname-public-manifest 
    export GIT_WORK_TREE=~/apps/appname/public 
    git read-tree -um `git write-tree` master:folder3/subc 
) 

git write-tree寫一棵樹git read-tree檢查,並讀樹應用之間的區別是什麼,現在在那裏的,什麼是在指定的樹索引和worktree。

如果沒有什麼在該目錄中已經沒有必要進行初始化,否則

( 
    export GIT_INDEX_FILE=/path/to/repo/.git/appname-public-manifest 
    export GIT_WORK_TREE=~/apps/appname/public 
    git read-tree --empty # start from nothing 
    git add .    # index what's there now 
) 

將設置清單以匹配已經存在。

+0

在執行導出和git讀取樹之前,是否需要執行git克隆? – Vallieres

+0

你需要在一些有'〜/ apps/appname/public'文件系統訪問權限的倉庫中執行這個操作,並且你有任何提交你的內容的提交,但是你不需要專門的倉庫,索引你維護什麼在工作樹(而不是回購的默認)。 – jthill

+0

將'GIT_INDEX_FILE'路徑名設置爲絕對地址,以便與'git add .'一起工作,該cd首先到達工作樹。 – jthill