【问题标题】:Add Git to Existing PhpStorm Project Subfolder将 Git 添加到现有的 PhpStorm 项目子文件夹
【发布时间】:2017-07-27 06:07:34
【问题描述】:

我环顾四周,似乎找不到这个特殊难题的答案(这是有道理的,否则我不会在这里问这个问题!)或者至少如果有一个我没有没看懂。

我在 PhpStorm 中创建了一个项目,“Web 服务器在远程主机上,文件可以通过 FTP/SFTP/FTPS 访问”,我一直在对其进行更改,没有任何问题。本项目结构如下:

\Project Root
    \
    \ Subfolder A
        \ Contents A
    \
    \ Site
        \ Site stuff
    \
    \ Subfolder B
        \ Contents B

现在,我得到了这样的结果,因为虽然我正在处理的主要文件位于 Site,但我偶尔需要调整其他子文件夹中的一些内容。

保存项目上传文件没有问题。

我现在遇到的问题是 Site 在使用 Git 的服务器上处于版本控制之下。我可以登录到服务器并在那里做一些 Git 的事情(虽然我对 Git 不太熟悉)但是当我尝试提取一些已经提交到 repo 的更改时(那是上游,是吗?)有一个合并冲突。因为我对此很陌生,所以我宁愿不尝试使用vimdiff 通过命令行解决冲突。

有没有一种方法可以让我通过 PhpStorm 设置 Git,使其仅作用于该特定文件夹,从远程存储库(托管在该项目的另一台服务器上)中提取更改,合并和解决 PhpStorm 中的冲突,然后上传文件以这样的方式在服务器上显示为与当前分支是最新的?

我曾考虑通过 SFTP 从服务器获取 .git 目录,然后将其放入 Site 文件夹中,就像它在上面一样,但我不确定这是否可行。我也认为 PhpStorm 有充分的理由不这样做。

编辑:为了澄清一点,Site 很脏。在我对它们满意之前,我不想提交这些更改,但我现在仍然需要它们在那里。我尝试了存储、拉取、然后应用,但那是我收到合并冲突错误的时候,我想在 PhpStorm 中解决这些冲突。

【问题讨论】:

  • 如果Site文件夹是唯一受版本控制的东西,那么只有这个文件夹会被Git管理。您无需担心其他文件/文件夹与您的 VCS 进程混在一起。
  • @TimBiegeleisen 我不担心它们与 VCS 混在一起,我只需要找到一种方法让 PhpStorm 识别 Site 实际上在服务器上的 VCS 下,并知道在哪里repo 是为了拉取更改,以便我可以合并和解决 PhpStorm 本身内部的冲突。如果这有任何意义:P

标签: git version-control phpstorm


【解决方案1】:

好的,所以我想我会大胆尝试忽略 PhpStorm 拒绝触摸 .git 文件夹。这是一个很长的路要走,但这是我所做的:

  1. 打开项目
  2. 选择VCS -> Enable Version Control Integration
  3. 选择 Git 作为项目根目录的 VCS

这会在您的项目根目录中创建一个.git 文件夹。由于我们不希望 VCS 下的根目录而是其中一个子文件夹,因此我们可以:

  1. 打开Preferences
  2. 在左侧窗格中选择Version Control
  3. 在右侧窗格中选择项目并单击编辑铅笔
  4. 在出现的对话框中,将 Directory 条目编辑到要使用 Git 的子文件夹,然后单击 OK
  5. ApplyOK

这将在日志中引发错误,抱怨该目录“已注册为 Git 根目录,但在那里找不到 Git 存储库”。这很好,因为我们将自己添加它。

  1. 关闭 PhpStorm
  2. 打开您喜欢的 FTP 程序并从服务器获取.git
  3. 将其放入您之前选择的目录中(如Project Root/Site 或其他)

您可以删除在您的项目根目录下创建的.git 文件夹 PhpStorm,因为我们不再需要它了;它将使用我们刚刚复制的那个。

可能有一些额外的设置需要调整。我使用密钥访问 Git 存储库,因此您可能必须在存储库中向您的 git 用户添加授权密钥。

可以直接跳到第 6 步并直接在那里添加目录。我猜它会做同样的事情。

但是,是的,现在我可以使用 Git 管理项目并通过 PhpStorm 而不是服务器上的命令行进行合并和操作! :D

【讨论】:

  • 你能解释一下“打开你最喜欢的 FTP 程序并从服务器获取 .git”吗?你的意思是来自github?
  • @Revious,如果您使用的是 GitHub,那么可以,您可以从 GitHub 下载 .git 文件夹。我认为最简单的方法可能是将 GitHub 存储库克隆到另一个目录,然后手动将 .git 目录复制到您需要的位置(上面的第 11 步)。希望有帮助!
【解决方案2】:

由于您已经存储了本地更改,您可以通过以下步骤将本地 Site 与服务器同步:

  1. 通过git merge --abort执行git pull时退出合并冲突。
  2. 将本地版本保存为git reset --hard origin/master 的远程仓库。

当您准备好使用本地更改时,可以使用git stash pop

【讨论】:

  • 我不想将其他文件夹添加到 repo。一个是特定于项目的,另一个有自己的回购。我只想对Site 文件夹采取行动,方法是拉取并合并服务器上与其关联的存储库中的更改。
  • 那么远程repo除了Site文件夹还有其他文件夹,你只需要从服务器上的Site文件夹拉取更改?
  • 远程仓库只有Site。子文件夹不在存储库中,我不希望它们存在。我提到它们只是为了说明不是整个项目都在版本控制之下,但它们仍然在 PhpStorm 项目中。
  • 谢谢。这基本上是我尝试的步骤,但它仍然是通过命令行而不是附加到 PhpStorm。不过我设法解决了(:
猜你喜欢
  • 2018-10-24
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
相关资源
最近更新 更多