2017-08-06 94 views
0

對於我的第一個phalcon項目,我決定選擇fortrabbit-hosting,儘管我沒有使用git的強大經驗。我在一棵主樹上工作,這個主樹不斷被推動並推動着。我有一些文件夾,裏面充滿了用戶生成的內容(圖片上傳)。爲了在做新提交後不刪除這些文件,我把這個文件夾放到我的.gitignore文件中。但我怎樣才能更新我的本地存儲庫與這個用戶生成的內容? git pullgit fetch在這種情況下不起作用。那麼使用git部署到現場舞臺的正確方式是什麼?git clone - 用戶生成內容丟失

+1

「git pull」或「git fetch」在這種情況下不起作用「......當然它沒有。你讓Git忽略這些內容:「我把這個文件夾放到我的'.gitignore'文件中。 (這可能是正確的選擇,內容不應該用代碼來跟蹤,你的最終目標是什麼? – Chris

+0

感謝您的快速響應:-) ...我的最終目標是使用git從live-server獲取所有數據,即使我已經設置了一些文件夾gitignore。有沒有辦法在獲取所有文件時忽略gitignore? –

+0

編號'git fetch'不能在文件上操作;它在_commits_上運行。無法使用Git「提取」未提交的數據。如果你真的需要在兩臺機器之間同步內容,請考慮一下;你真的可能不需要它 - 你應該單獨考慮你的代碼。 – Chris

回答

0

您的代碼庫是Git的一部分,您可以使用Git將其部署到Web空間。 Web空間本身不在Git中。遠程Git倉庫同步或複製它的內容到網站空間。

這不是設置正確的.gitignore規則的問題。 webspace上的文件可能會發生變化:例如,軟件權限temp-,log-,cache-files或user-uploads。另一個例子是,當使用「網絡安裝程序」(認爲WordPress更新)。所有這些更改都不會反映在Git中 - 因爲將這些運行時數據存儲在Git中並不是一個好習慣,並且因爲沒有辦法將這些更改同步回Git倉庫(所以您可以將這些更改重新導入) 。這不可能,也不是你想要的。

有應對這種局面多種方法,最常見的兩種模式是:

  1. 最專業的是遵循12因子設計模式:代碼和內容是嚴格分開的。用戶生成的內容將被存儲在場外。通過每次Git推送,代碼庫將被重新打包並重新部署。 Apps的存儲是短暫的,在每個(原子)部署中,完整的代碼庫將被替換爲新的內容。 Fortrabbit專業堆棧就是這樣設計的。

  2. 更方便 - 尤其是對傳統思維/設計 - 就像fortrabbit通用協議棧,在網絡空間,其中在從Git的回購部署新的文件將被「同步」的解決方案,以「覆蓋,但不刪除」。 Web空間是持久的,必要時可以通過SSH/SFTP登錄以獲取並下載所有文件。

請仔細詢問。這個問題可能不夠普遍,對堆棧溢出感興趣。

+0

感謝您的詳細回覆!現在我知道如何處理git和fortrabbit。 –