将Git添加到现有的PhpStorm项目子文件夹

时间:2017-07-27 06:07:34

标签: git version-control phpstorm

我已经环顾四周,似乎无法找到这个特殊难题的答案(这是有道理的,否则我不会在这里询问它!)或者至少如果有一个我的避风港不明白。

我在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中解决这些冲突。

2 个答案:

答案 0 :(得分:1)

好的,所以我认为我大胆并试图忽略PhpStorm拒绝触摸.git文件夹。这是一个漫长的过程,但这就是我所做的:

  1. 打开项目
  2. 选择VCS - > Enable Version Control Integration
  3. 选择Git作为项目根目录的VCS
  4. 这会在项目根目录中创建一个.git文件夹。由于我们不想在VCS下使用根,而是需要其中一个子文件夹,我们可以:

    1. 打开Preferences
    2. 在左侧窗格中选择Version Control
    3. 在右侧窗格中选择项目,然后单击编辑铅笔
    4. 在结果对话框中,修改要使用Git的子文件夹的Directory条目,然后点击OK
    5. ApplyOK
    6. 这会在日志中产生一个错误,即目录"被注册为Git根目录,但在那里没有找到Git回购。"这很好,因为我们将自己添加它。

      1. 关闭PhpStorm
      2. 打开您喜欢的FTP程序并从服务器中获取.git
      3. 将它放在您之前选择的目录中(所以Project Root/Site或其他)
      4. 您可以删除在项目根目录下创建的.git文件夹PhpStorm,因为我们不再需要它了;它将使用我们刚刚复制过的那个。

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

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

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

答案 1 :(得分:0)

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

  1. git pull执行git merge --abort时退出合并冲突。
  2. 通过git reset --hard origin/master将本地版本保留为远程仓库。
  3. 当您准备好使用本地更改时,可以使用git stash pop