如何将特定文件夹从主分支推送到 gh-pages 分支?

3
我对Github和Web开发都不是很熟悉。如果我将所有项目文件放在我的主分支上,然后只想推送使我的页面在gh-pages上运行所需的文件,该怎么办?我应该如何告诉它仅将某些文件推送到新的gh-pages分支上?例如,当您使用Gulp或Grunt时,它会创建一个文件夹,其中包含用于预览站点的渲染站点。我应该如何仅将该站点文件夹中的内容推送至gh-pages,而不添加在主分支上的所有其他不必要的文件?
最近我一直在使用Jekyll,因为你可以将所有文件都推送到gh-pages,它仍然可以正常工作。但是我有很多项目有2个存储库。一个存储库包含所有源文件,另一个存储库仅包含我需要推送到gh-pages的文件。我希望整理我的Github页面,使其更加有组织。
谢谢。
3个回答

3

我知道这是一个老问题,但为了让新手在Git分支/gh-pages上受益并避免遇到此问题,我找到了将文件或文件夹从主分支移动到gh-pages分支的最简单方法,步骤如下。

# First switch to the gh-pages branch
git checkout gh-pages

# Next checkout the specific file you wish to add to the gh-pages branch
git checkout master -- <path/to/file/folders/on/master/branch>

# Perfom the commit
git commit -m "Updated index.html from master"

# And push
git push 

假设你想要添加到gh-pages分支的文件已经存在于master分支上,那么按照以上步骤操作应该不会有任何问题。

你能否评论一下 https://github.com/blog/2228-simpler-github-pages-publishing ?我不太清楚“发布页面”具体是什么意思?谢谢。 - denis

2
如果您正在使用nodejsnpm,您可以使用gh-pages包从命令行发布到特定目录下的gh-pages分支。 gh-pages包有一个命令行实用程序

安装该软件包会创建一个gh-pages命令行实用程序。运行gh-pages --help以查看支持的选项列表。

注意: 您提到使用Gulp,有一个npm软件包称为gulp-gh-pages,我成功地使用它创建了gulp任务并将其放入我的部署工作流程中。


这正是我一直在寻找的。几天前,我也找到了一种解决方案。我的处理方法是:我创建了一个名为 Main 的文件夹,然后在其中添加了一个 Master 文件夹。Master 文件夹包含所有项目文件。完成项目后,我将其克隆到我的 Main 文件夹中,并将所有克隆的文件推送到新的 gh-pages 分支中。然后,您只需更改要在克隆文件夹中使用的文件,并将更改推送到 gh-pages 目录,而不影响 Master 项目文件夹。 - user4616791
以上的软件包可以帮助您管理gh-pages分支,让您只需考虑工作流程并将构建过程放入临时文件夹中,而无需将其作为master分支的一部分存储在代码库中。构建完成后,只需使用该文件夹作为源运行命令即可。非常简单。 - talves
我还发现了一个方便的仓库,适用于我未来的jekyll项目:https://github.com/shakyShane/jekyll-gulp-sass-browser-sync - user4616791

0

我相信你正在寻找git subtree merge

子树合并的想法是你有两个项目,其中一个项目映射到另一个项目的子目录,反之亦然。 当你指定一个子树合并时,Git 足够聪明,可以找出一个是另一个的子树,并进行适当的合并 - 这非常神奇。


尽管对Jekyll来说有点过度,但如果您的Jekyll实例与GitHub兼容,您只需在gh-pages分支中保留仅限 Jekyll标记即可正常提供服务。这是大多数“项目”Jekyll网站的默认方式,在github.com上提供。 - maxheld
太棒了。我得试试子树合并。还有@maxheld,我说的是那些不基于Jekyll的项目。它们是一些旧项目,我不得不将它们推送到两个不同的存储库中,只是为了在需要时仍然拥有所有源代码和项目文件。 - user4616791
这有点不够详细。你能否提供一个实际的例子来设置 gh-pages? - hugo der hungrige

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