簡體   English   中英

Phpstorm:使用 git 分支和遠程部署

[英]Phpstorm : working with git branches and remote deployment

我有一個 PhpStorm 項目鏈接到我設置自動部署的遠程服務器(VM),因此每次修改和保存文件時,它都會自動上傳到該服務器。 現在我想在這個項目上使用 GIT。 我的工作流程應該如下: - 處理本地副本 - 保存並自動上傳到開發服務器 - 測試(在開發服務器上打開網頁) - 如果可以,從本地副本提交。 然后推,等等...

我的問題是:如何使用分支機構? 我的意思是,我知道當切換分支時,我工作的目錄可以完全改變。 示例:我的分支 A 包含 a.html。 我的分支 B 只包含 b.html 如果我在本地切換分支,我的文件夾的內容會改變。 每次我切換分支時,PhpStorm 會在我的部署服務器上添加/刪除 a.html/b.html 嗎? 顯然,這不是我想要的。 這些更改將如何反映在部署服務器上,PhpStorm 如何管理它? 謝謝您的幫助

以防萬一有人正在尋找解決方案:

Tools > Deployment > Options

取消選中Skip external changes

請注意:必須選中選項Automatic Upload (always)

對於這樣的事情,您可以采用多種不同的方法。 這是一對。

  1. 在服務器上設置一個 cron 作業以定期從 master 拉取,然后您必須為每個新任務使用分支並在完成后合並它們,cron 作業將在下一次拉取 master 時處理它。
  2. 如果您更喜歡在 phpstorm 中處理這個問題,您可以在 .bashrc 或 .bash_profile 中創建一個 bash 別名以通過 ssh 進入服務器並執行拉取操作(我將別名命名為“deploy”),然后您可以在構建的在 phpstorm 的終端中。

我更喜歡第二種方法,因為我不必等待 cron 來完成它,而且我可以看到何時發生錯誤,例如某種合並沖突。

我能夠在遠程環境中打開一個 ssh 窗口來解決這個問題。 只需創建一個分支並在遠程服務器上進行結帳即可。 現在,您通過 phpstorm 上傳的所有更改都將計為對該分支的更改。 您仍然可以保存,然后在瀏覽器中查看結果。

來自Jetbrains 支持社區帖子

您可以利用同步存儲庫控制:

在 .idea 文件夾中初始化一個 repo,添加與主 repo 中相同的分支,並將相應的 deployment.xml 添加到它們。 因此,您的項目將有 2 個存儲庫 - 主要的一個帶有代碼,共享,本地一個帶有您的 .idea/deployment(以及其他配置,如果需要)。

確保 .idea 文件夾中的 repo 在 IDE 中被正確識別,在 Settings | 添加映射版本控制。 然后在 Settings | 中啟用對所有分支執行 git 操作版本控制 | 吉特。

這樣,隨着主倉庫中分支的切換,deployment.xml 的版本也將被切換。

我對此進行了測試,效果很好。 您必須在 .idea 中使用與主倉庫相同的分支設置倉庫,並按照描述進行設置。 在 .idea 存儲庫中提交兩個版本的 deployment.xml 文件。 切換分支時,.idea repo 分支也會切換。 唯一需要注意的是,您必須使用 PHPStorm Git 分支窗口同時切換兩者。 在終端中通過 git checkout 進行切換對此不起作用。 當您習慣使用終端時,我發現這不太方便。 通過 Git 分支窗口進行的切換在終端中不可見,因此您很快就會對簽出哪個分支感到困惑。

更多信息:

https://blog.jetbrains.com/idea/2012/08/git-branches-for-multi-root-projects/ https://www.jetbrains.com/help/idea/manage-branches.html#synchronous_branch_control

PHPStorm 的 GIT 將僅使用您的本地副本。 這與部署無關。 PHPStorm 不應在項目中提交自己的配置文件。 您可以在Settings -> Version Control -> Ignored Files ,其中應該顯示.idea文件夾和以.iws結尾的文件。 當然你也可以添加其他文件來忽略(比如你自己的配置文件)

如果您在 CLI 中使用 git(而不是在 PHPStorm 中),您應該創建一個包含忽略 PHPStorm 配置文件的 .gitignore 文件:

/.idea
*.iws

PHPStorm 應該只在部署選項中啟用Upload external changes時同步分支開關,因為 GIT 是外部的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM