Phpstorm:使用Git分支和远程部署

5
我有一个PhpStorm项目链接到一个远程服务器(VM),在那里我设置了自动部署,所以每当我修改并保存一个文件时,它会自动上传到这个服务器。现在我想在这个项目上使用GIT。我的工作流应该是这样的: - 在本地拷贝上进行工作 - 保存和自动上传到开发服务器 - 测试(在开发服务器上打开网页) - 如果没有问题,从本地拷贝提交。然后推送等等...
我的问题是:如何使用分支?我的意思是,我知道切换分支时,我工作的目录可以完全改变。例如:我的分支A包含a.html。我的分支B只包含b.html。如果我在本地切换分支,我的文件夹内容将改变。PhpStorm每次切换分支是否会在我的部署服务器上添加/删除a.html/b.html?显然,这不是我想要的。这些更改将如何反映在部署服务器上,PhpStorm如何管理它? 谢谢您的帮助。

(我不是VCS+Deployment方面的专家)自动化:不太可能(即使可以:它可能会造成混乱)。最好手动操作(我会这样做):工具|部署|与已部署同步...。无论如何:在设置|部署|选项中有一些自动部署的设置(据我所知,VCS操作被视为“外部活动”,因此您应该检查该选项)。 - LazyOne
好的,PhpStorm并没有为这种情况提供真正的解决方案。为了能够测试每个分支,我必须无论如何都要上传到部署服务器(因此在不同的远程文件夹中)。为此,我将不得不为每个分支创建一个部署服务器,并选择在哪个服务器上进行部署?这是最好的解决方案吗? - Tinostarn
抱歉——在版本控制系统方面我并不能真正提供帮助;但是,如果每个代码分支都需要部署到不同的文件夹中,那么是的——要么创建多个部署入口并在它们之间切换(或在手动同步时手动选择要使用的入口),要么每次更改默认的部署入口(更改目标文件夹)。正如您所看到的,这方面没有自动化。如果部署将进入相同的文件夹,则我真的没有看到任何问题(除非我误解了您的意思)。 - LazyOne
好的,如果没有自动化或更好的解决方案,我将选择在创建分支时每次创建部署条目。但回想一下,我想知道是否拥有一个经常变化的远程文件夹真的是一个问题,只要我可以通过打开浏览器进行测试并拥有完全功能的环境。欢迎任何其他建议 :) - Tinostarn
5个回答

1

对于这样的问题,你可以采用多种不同的方法。以下是其中的几种。

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

我更喜欢第二种方法,因为我不必等待cron完成它的工作,而且我可以看到是否出现了诸如合并冲突之类的错误。


1

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

Tools > Deployment > Options

取消勾选 跳过外部更改

请注意:选项 自动上传(始终) 必须被勾选


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

0

来自Jetbrains支持社区帖子

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

在.idea文件夹中初始化一个存储库,添加与主存储库相同的分支,并将相应的deployment.xml添加到其中。因此,您的项目将有两个存储库-一个是共享代码的主要存储库,另一个是带有.idea/deployment(和其他必要配置)的本地存储库。

确保.idea文件夹中的存储库在IDE中被正确识别,在“设置|版本控制”中添加映射。然后在“设置|版本控制|Git”中启用对所有分支执行git操作。

这样,随着在主存储库中切换分支,deployment.xml的版本也会被切换。

我测试过了,它运行良好。您必须在.idea中设置与主要repo相同的分支,并按照描述进行设置。在.idea repo中提交部署.xml文件的两个版本。 切换分支时,.idea repo分支也会被切换。唯一的注意事项是您必须使用PHPStorm Git Branches窗口同时切换两者。通过终端中的git checkout切换不起作用。当您习惯使用终端时,我发现这不太方便。通过Git Branches窗口切换在终端中不可见,因此您很快就会混淆哪个分支已检出。

更多信息:

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


-1

PHPStorm的GIT只会使用您本地的副本。这与部署无关。PHPStorm不应该在项目中提交自己的配置文件。您可以在“设置->版本控制->忽略的文件”中检查,其中应该显示“.idea”文件夹和以“.iws”结尾的文件。当然,您也可以添加其他要忽略的文件(如您自己的配置文件)

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

/.idea
*.iws

只有在部署选项中启用了“上传外部更改”时,PHPStorm才应该仅同步分支切换,因为GIT是外部的。


你好,感谢你的回答,但这并不是我想要的。我看到的主要问题是当我切换分支时。我的 A 分支包含一个名为 a.html 的文件。我切换到 B 分支,它只包含 b.html。它会每次与远程服务器同步并更改那里文件夹的内容吗? - Tinostarn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接