2014-09-02 76 views
2

我們在git中有一個倉庫,其中項目包含在名爲Project的文件夾中。我們希望能夠通過克隆repo來將代碼發佈到生產服務器,而不包括「Project」文件夾,但是包含它下面的所有內容。這可能嗎?目標目錄名稱是/ var/www,它與項目中的任何內容無關。不幸的是,由於我們託管服務提供商的性質,我們不能只做一個符號鏈接(我們很快就會改變)。沒有包含頂級/父級文件夾的Git克隆

+0

只是嘗試'git clone Project/var/www'' – 2014-09-02 21:31:41

+0

我不想在克隆過程中包含Project文件夾。而不是/var/www/Project/index.html我寧願將/var/www/index.html – StackOverflowed 2014-09-02 21:34:33

+0

cd放到你的Project文件夾中,運行'git init','git add .','git commit -a'和然後將其克隆到您的生產服務器。這會實現你想要的嗎? – genisage 2014-09-02 21:51:17

回答

2

我的回答需要你有一個Git倉庫,其內容的假設如下:

/.gitignore 
/Project 
/Project/index.php 
/ProjectB 
/ProjectB/pom.xml 

如果你不需要的歷史都在你的倉庫的副本,還有就是git archive命令,可以做你想做的,除了其輸出將其數據tarzip格式:

git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>] 
       [-o <file> | --output=<file>] [--worktree-attributes] 
       [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish> 
       [<path>…] 

像:

git archive --format=zip [email protected] master -- Project | unzip 

但是,git clone命令不接受存儲庫路徑,我認爲它不是真的只想導出某個分支的樹視圖。您可能需要一個使項目成爲獨立git存儲庫的子模塊,或者像git archive示例一樣,僅獲得您想要的但沒有版本控制(在生產服務器上可能存在問題)。

相反,你可以這樣做:

  • 克隆你的倉庫到任何路徑,說/opt/foobar
  • /var/www中創建/opt/foobar/Project的符號鏈接。

或在您的apache配置(避免符號鏈接)而不是簡單的/var/www中引用/opt/foobar/Project