我目前正在处理一个github页面项目,并将网站生成到名为dev
的分支上名为dist
的文件夹中。我想把dist的内容推送到master分支。我在谷歌上找到了github子树,我可以使用以下命令将dist
目录推送到master
git subtree push --prefix dist origin master
问题是这会推送整个目录。因此master分支有一个名为dist
的目录,其中包含dist/index.html
等。相反,我想将dist的所有内容推送到master分支。使得主分支包含index.html
和所有其他内容。如何做到这一点?
这不是一件容易的事(除了做一些git filter-branch
魔术)
如果你看过"为GitHub页面配置发布源",你应该直接在gh-pages
分支中生成你的网站。
或者,您可以保留在master
分支中,但在docs/
文件夹而不是dist
中生成。
在这两种情况下,GitHub页面都会呈现这些内容。
但是,对于用户页面:
如果您的网站是具有名为
<username>.github.io
或<orgname>.github.io
的存储库的用户或组织页面,则无法从不同位置发布网站的源文件
具有此类型存储库名称的用户和组织页面仅从master
分支发布。
在这种情况下,反转您的工作流程:
- 在
dev
分支上开发您的站点 - 在
master
分支上生成您的站点
当您在dev
分支中时,您可以将master
分支声明为子模块(请参阅此处了解过程),因此它将作为"子文件夹"可见(例如"dist
"子文件夹,但该子文件夹实际上是master
上的同一Git repo)
像往常一样生成您的站点(在dist
中),进入dist、添加、提交和推送(该子文件夹是子模块,它将在其关联的分支上推送:master
)
然后返回到您的项目repo文件夹(dist
的父级,当前在dev
分支上),添加、提交并推送(以记录子模块dist
的新状态)