2013-07-26 106 views
0

我有一个化身网站这个文件夹结构:杰基尔部署与GIT

jekyll_site 
    _source 
    file1 in source 
    file2 in source 
    etc... 
    _deploy 
    file1 in deploy 
    file2 in deploy 
    etc... 

我在jekyll_site初始化的混帐回购协议,我有两个分支主人和来源。 我希望源分支只跟踪_source文件夹,并且主要只跟踪_deploy文件夹。另外,我想将它们推送到远程仓库,但要掌握分支出现(在远程回购):

master branch 
    file1 in deploy 
    file2 in deploy 

不是:

master branch 
    _deploy 
    file1 in deploy 
    file2 in deploy 

所以我想转变整个事情之一升级。 假设我可以在部署中创建另一个仓库,以使其成为root用户并单独推送它们。但也许有一个回购也是可能的。 对不起,如果我忽略了一些非常明显的东西,我非常疲惫(而且非常厌烦)。

回答

0

这里有几个不同的事情发生。

  • Git没有被设计为在一个分支上管理一个目录,而在另一个分支中维护另一个目录。要按照您描述的方式分别管理两个目录,需要两个Git回购站。一个储存库jekyll_site/_source,第二个储存库jekyll_site/_deploy

  • 使用两个Git仓库负责将您的“_deploy”文件上移一个级别。由于存储库将在jekyll_site/_deploy创建,文件将部署到根目录。

  • 如果您决定仍然希望使用单个存储库,请不要与Git战斗。也就是说,不要尝试使用不同的分支来分别管理_source_deploy目录。只需在jekyll_site级别创建一个回购。采用这种方法,除了Git之外,您还需要为您的部署使用一些东西。编写一个简单的脚本,将文件从_deploy移动到最终需要的位置。

  • 不要试图把一个Git仓库放在另一个仓库中。坏事会发生。 (有一种方法做“Submodules”但是这不是你想更动,直到你使用Git更多的经验的东西。)

+0

感谢由 我的主要目标停止是有我的下版本源控制,因为部署只是从根(也就是网站)提供的生成文件夹。所以每个修改都是在源代码中完成的,但是由于我正在向Github推送,部署也必须受到修订控制。我看到有人用这种方法处理这个问题,比如[将第二个分支过滤到子目录](http://davidensinger.com/2013/04/deploying-jekyll-to-github-pages/),[复制生成的文件反复](http://charliepark.org/jekyll-with-plugins/),或只是回购里面的回购风格 – marchello