2017-07-27 49 views
0

我环顾四周,似乎无法找到这个特定难题的答案(这将有意义,否则我不会在这里询问它)或者至少如果有一个我没有理解它。添加Git到现有的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中的这些冲突。

+0

如果'Site'文件夹是版本控制下的唯一东西,那么只有这个文件夹将由Git管理。您无需担心与VCS进程混合的其他文件/文件夹。 –

+0

@TimBiegeleisen我不担心他们与VCS混合在一起,我只需要找出一种方法让PhpStorm认识到“Site”实际上在服务器上的VCS下,并知道回购站在哪里进行更改我可以合并并解决PhpStorm内部的冲突。如果这是有道理的:P –

回答

1

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

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

这将创建一个.git文件夹在您的项目根目录中。因为我们不希望在VCS根,但一个子文件夹,我们可以:

  • 打开Preferences
  • 选择Version Control在左侧窗格中
  • 选择项目在右侧窗格,然后单击编辑铅笔
  • 在出现的对话框中,编辑Directory进入你想使用Git的使用,并单击子文件夹OK
  • ApplyOK
  • 这会在日志呻吟中产生一个错误,该目录“被注册为Git根目录,但没有在其中找到Git回收站”。这很好,因为我们将自己添加它。

  • 关闭PhpStorm
  • 打开你最喜爱的FTP程序,并抓住从服务器
  • plonk的它在您之前选择的目录(这样Project Root/Site或其他)
  • .git

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

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

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

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

    0

    既然你已经藏你的本地修改,您可以通过以下步骤同步本地Site与服务器:

    1. 退出当您通过git merge --abort执行git pull合并冲突。
    2. 保留本地版本作为远程回购git reset --hard origin/master

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

    +0

    我不想将其他文件夹添加到回购。一个是项目特定的,另一个有自己的回购。我只想在“Site”文件夹中执行操作,方法是从服务器上关联的repo中更改并合并它们。 –

    +0

    所以远程仓库除了'Site'文件夹外还有其他文件夹,你只需要从服务器上的'Site'文件夹中进行更改? –

    +0

    远程回购只是'Site'。子文件夹不在回购站中,我不希望它们成为。我只是提到他们说明并非整个项目都受版本控制,但他们仍然在PhpStorm项目中。 –

    相关问题