當運用 Heroku 佈署專案時,若你的專案資料夾是位於某個 Git 的子資料夾下的話,那就會遇到 Heroku 說讀取不到你的設定檔(如 Node.js 的 package.json),因而佈署失敗的問題。這時,你可以運用 Git Subtree 的特性來解決這問題。
解決方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/*開始前,請先確認你的資料夾關聯。以下案例是以 A 資料夾其內的 B 子資料夾為例子*/ /*換言之,Git 的紀錄是記錄在 A 資料夾下, B因為屬於其子資料夾,所以改動都會保存在 A 資料夾下的 Git 檔*/ // 初始化 Heroku npm install -g heroku heroku login heroku git:remote -a newApp // newApp 為事先建立在 Heroku 上的APP名稱 // cd 在 A 資料夾的情況下 // 推撥子資料夾上 heroku 位置的 master git subtree push --prefix newApp heroku master // 如果 Heroku 不認得你的資料庫語言,可以事先指定 (此例為 Node.js) heroku buildpacks:set heroku/nodejs |
原理
若有一 A Repository 內,有可獨立運作子專案 B,他們共用A Repository 的 S 項目。在運用 Subtree 後,大家各自對 S 項目作修改並給予 Commit 。在與遠端同步時,由 A Repository 的位置作推撥發佈,其 Git 會去瀏覽所有的 Git 記錄,並將屬於 S 部分的另外推撥到另外指定的 Git 上,同時保留一份相同的紀錄在原有的 Master 上。
參考資料
1. Git Subtree的使用
2. Deploy Git subdirectory to Heroku