git - 如何使用 index.html 作为子目录的符号链接(symbolic link)在 gh-pages 中部署

标签 git github symlink github-pages

假设我在 gh-pages 或其他 github 网站 repo 中有以下目录结构:

-project-dir
-- index.html      # a symlink to mysite/index.html
-- mysite/
--- index.html     # actual source, references otherstuff
--- otherstuff/

我不想复制 mysite/的内容以使其全部位于顶层。在我的例子中,这是因为它是以特定格式自动生成的,如果它不能驻留在子目录中,将非常难以管理。

例如,为了让自定义域与 gh-pages 一起工作,我需要一个位于顶层目录的 CNAME 文件。但我可能还想要在目录结构的更下方有一个不同的 CNAME 文件。只需将 mysite 上的内容复制到顶层即可覆盖它。

(这个例子有点简化。真实的例子涉及很多其他可以被覆盖的东西,并且处理很多不应该被复制的自动生成的组件。)

自然的解决方案似乎是符号链接(symbolic link),但如果我将顶级 index.html 变成指向 mysite/index.html 的符号链接(symbolic link),那么它就会失败因为 GitHub 没有正确处理符号链接(symbolic link)。

将所有代码组织到子目录中并且将其放入顶级目录的标准解决方案是什么?

最佳答案

我不知道这个解决方案是否可以正常使用 CNAME 文件,但是您可以通过在根目录中添加以下 index.html 来让 GitHub Pages 在您的 gh-pages 分支中提供一个子目录:

<!-- Redirect to mysite subdirectory -->
<meta HTTP-EQUIV="REFRESH" content="0; url=mysite/index.html">

参见 here解释和here对于类似的 SO 答案。它们都使用完整 URL,但我更喜欢使用相对 URL。

关于git - 如何使用 index.html 作为子目录的符号链接(symbolic link)在 gh-pages 中部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35531207/

相关文章:

git - 在远程服务器上创建本地 git 存储库的副本

Git:在 merge 分支上工作,之后未 merge

git - 如何防止 merge 的更改显示为 'changes to be committed'

git - 有没有办法避免 ssh 配置中的默认 git 用户?

在 git push 上运行单元测试,在 pull request 上运行集成测试

git - 系统配置文件(nginx/php.ini 等)的 git repo 的最佳实践

git - 使用跟踪的远程分支的更改更新本地分支

通过网络复制符号链接(symbolic link)

linux - 如何查看符号链接(symbolic link)的完整绝对路径

mysql - 使用符号链接(symbolic link)移动数据库目录后看不到 MySQL 表