首頁  >  問答  >  主體

python - django 專案的 migrations 目錄是否應該提交到 git

如題,當本地開發環境修改 model 時,有些時候會變動好幾次,然後就產生了很多 migrations 檔案。

但是部署到伺服器時,伺服器端應該怎麼執行變更:

  1. 不上傳 migrations 文件,直接執行 makemigrations 重新產生 migrations,再執行 migrate

  2. 上傳開發時的 migrations 文件,然後直接執行 migrate

上面兩種方法該選哪一種?為什麼?

伊谢尔伦伊谢尔伦2686 天前1167

全部回覆(5)我來回復

  • 扔个三星炸死你

    扔个三星炸死你2017-06-12 09:26:24

    按照官方的說法,應該提交,並且在伺服器端應該直接執行 migrate,無需再次生成。

    You should think of migrations as a version control system for your database schema. makemigrations is responsible for packaging up your model changes into inpidual migration files - analogous to comexs - posepose pun.

    The migration files for each app live in a “migrations” directory inside of that app, and are designed to be committed to, and distributed as part of, its codebase. You should be making them once on your andrunce opment the runce same migrations on your colleagues' machines, your staging machines, and eventually your production machines.

    中文翻譯:

    你可以想像 migrations 相當一個你的資料庫的一個版本控制系統。 makemigrations 指令負責將你的模型保存到一個遷移檔案 - 和 commits 很類似 - 同時 migrate負責將變更提交到資料庫。

    每個 app 的遷移檔案會儲存到每個對應 app 的「migrations」資料夾裡面,並且準備如何去執行它, 作為一個分散式程式碼庫。 每當在你的開發機器或是你同事的機器並且最終在你的生產機器上運行同樣的遷移,你應該再創建這些文件。

    回覆
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-12 09:26:24

    建議提交到版本庫。

    回覆
    0
  • 黄舟

    黄舟2017-06-12 09:26:24

    我目前是不同步到遠端庫的。
    因為開發過程中要頻繁的對model進行修改,會產生很多migrations文件,不好控制migrate不出錯;
    發布程序之前,首先確認是否進行model更新,如果有的話先進行makemigrations然後migrate,由於本地已經測試完成,所以不容易出現一些奇怪的同步問題。

    回覆
    0
  • PHP中文网

    PHP中文网2017-06-12 09:26:24

    為什麼不提交之前把migrations裡新生成的多次變動刪了 重新makemigrations一下然後提交版本庫呢

    回覆
    0
  • 黄舟

    黄舟2017-06-12 09:26:24

    可是在本地,添加字段然後再刪除等等一些無用的操作,最後可能數據庫沒有任何變動,那麼這些 migrations 也得提交到伺服器上再運行一遍?

    回覆
    0
  • 取消回覆