【问题标题】:Phpstorm : working with git branches and remote deploymentPhpstorm:使用 git 分支和远程部署
【发布时间】:2014-10-03 14:34:56
【问题描述】:

我有一个 PhpStorm 项目链接到我设置自动部署的远程服务器(VM),所以每次我修改和保存文件时,它都会自动上传到该服务器。 现在我想在这个项目上使用 GIT。 我的工作流程应该如下: - 处理本地副本 - 保存并自动上传到开发服务器 - 测试(在开发服务器上打开网页) - 如果可以,从本地副本提交。然后推,等等……

我的问题是:如何使用分支?我的意思是,我知道当切换分支时,我工作的目录可以完全改变。 示例:我的分支 A 包含 a.html。我的分支 B 只包含 b.html 如果我在本地切换分支,我的文件夹的内容将会改变。每次我切换分支时,PhpStorm 会在我的部署服务器上添加/删除 a.html/b.html 吗?显然,这不是我想要的。 这些更改将如何反映在部署服务器上,PhpStorm 如何管理它? 谢谢你的帮助

【问题讨论】:

  • (这里不是 VCS+部署方面的专家)自动:不太可能(即使确实如此:它可能会造成混乱)。最好手动操作(我愿意):Tools | Deployment | Sync with Deployed...。在任何情况下:Settings | Deployment | Options 中的自动部署设置很少(AFAIK VCS 操作被视为“外部活动”,因此您应该检查该选项)。
  • 好吧,所以 PhpStorm 并没有为这种情况提供真正的解决方案。为了能够测试每个分支,无论如何我都必须上传到部署服务器(所以在不同的远程文件夹中)。为此,我必须为每个分支创建一个部署服务器,并选择我在哪个服务器上部署?这是最好的解决方案吗?
  • 抱歉——在这里真的帮不上忙(我自己不使用 VCS;()。但是 .. 如果每个分支的部署都必须放在不同的文件夹中 .. 那么是的——要么创建多个部署条目并在它们之间切换(或手动选择在手动同步时使用哪一个)..或每次更改默认部署条目(更改目标文件夹)。如您所见,这方面没有自动化。如果将进行部署进入同一个文件夹——那么我在这里看不到任何问题(除非我弄错了)。
  • 好的,如果没有自动化或没有更好的解决方案,我会选择在每次创建分支时创建部署条目。但是回想起来,我怀疑拥有一个一直在变化的远程文件夹是否真的是一个问题,只要我可以通过打开浏览器进行测试并拥有一个功能齐全的环境。欢迎任何其他建议:)

标签: git phpstorm git-branch


【解决方案1】:

以防万一有人在寻找解决方案:

Tools > Deployment > Options

取消选中Skip external changes

请注意:必须勾选选项Automatic Upload (always)

【讨论】:

    【解决方案2】:

    对于这样的事情,您可以采用多种不同的方法。这是一对。

    1. 在服务器上设置一个 cron 作业以定期从 master 拉取,然后您必须为每个新任务使用分支并在完成后合并它们,cron 作业将在下一次拉取 master 时处理它。
    2. 如果您更喜欢在 phpstorm 中处理此问题,您可以在 .bashrc 或 .bash_profile 中创建一个 bash 别名,以通过 ssh 进入服务器并执行拉取操作(我将别名命名为“deploy”),然后您可以运行命令在 phpstorm 的内置终端中。

    我更喜欢第二种方法,因为我不必等待 cron 来执行它,而且我可以看到何时发生错误,例如某种合并冲突。

    【讨论】:

      【解决方案3】:

      通过远程环境打开 ssh 窗口,我能够解决这个问题。只需创建一个分支并在远程服务器上进行结帐。现在,您通过 phpstorm 上传的所有更改都将计为对该分支的更改。您仍然可以保存并在浏览器中查看结果。

      【讨论】:

        【解决方案4】:

        来自a Jetbrains support community post

        您可以利用同步存储库控制:

        在 .idea 文件夹中初始化一个 repo,添加与你相同的分支 主仓库,并将相应的deployment.xml添加到它们。所以 您的项目将有 2 个存储库 - 带有代码的主要存储库,即 共享,以及与您的 .idea/deployment (和其他 如果需要配置)。

        确保 .idea 文件夹中的 repo 在 IDE,在 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

        【讨论】:

          【解决方案5】:

          PHPStorm 的 GIT 只会使用您的本地副本。这与部署无关。 PHPStorm 不应该在项目中提交他自己的配置文件。您可以在Settings -> Version Control -> Ignored Files 进行检查,其中应该显示.idea 文件夹和以.iws 结尾的文件。当然你也可以添加其他文件来忽略(比如你自己的配置文件)

          如果您在 CLI(而不是 PHPStorm)中使用 git,您应该创建一个 .gitignore 文件,其中包含忽略 PHPStorm 的配置文件:

          /.idea
          *.iws
          

          PHPStorm 应该只在部署选项中启用 Upload external changes 时同步分支开关,因为 GIT 是外部的。

          【讨论】:

          • 您好,感谢您的回答,但这并不是我真正想要的。我看到的主要问题是当我切换分支时。我的分支 A 包含一个文件 a.html。我打开我的分支 B,它只包含 b.html。它会每次都与我的远程服务器同步并在那里更改我的文件夹的内容吗?
          猜你喜欢
          • 2017-09-05
          • 1970-01-01
          • 2012-10-22
          • 2015-08-27
          • 1970-01-01
          • 2016-02-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-12
          相关资源
          最近更新 更多