用git子树推送到项目根目录

时间:2019-01-16 04:31:33

标签: git github subtree

我目前正在处理github页面项目,并将网站生成到名为dist的分支上名为dev的文件夹。我想将dist的内容推送到master分支。到处搜寻,我发现了github子树,可以使用以下命令将dist目录推送到master

git subtree push --prefix dist origin master

issue会推送整个目录。所以master分支有一个名为dist的目录,包含dist/index.html等。相反,我想将dist的所有内容推送到master分支。这样master分支就包含index.html和所有其他内容。该怎么办?

1 个答案:

答案 0 :(得分:2)

这不容易做到(除了做一些git filter-branch魔术之外)

如果您查看“ Configuring a publishing source for GitHub Pages”,则应该直接在gh-pages分支中生成站点。

或者,您可以留在master分支中,但在docs/文件夹中而不是dist生成。

在两种情况下,GitHub页面都将呈现该内容。

但是,对于User Page

  

如果您的网站是具有名为<username>.github.io<orgname>.github.io的存储库的用户或组织页面,则无法从不同位置发布网站的源文件。
  具有这种存储库名称类型的用户和组织页面仅从master分支发布

在这种情况下,请逆转您的工作流程:

  • dev分支上开发您的网站,
  • master分支上生成您的网站

当您进入dev分支时,您可以将master分支声明为子模块(请参见here for the procedure),因此将其显示为一个“子文件夹”(例如一个“ dist”子文件夹,除了该子文件夹实际上是您在master上的同一个Git存储库)

像往常一样(在dist中生成站点,进入dist,添加,提交和推送(该子文件夹是一个子模块,它将推送其关联的分支:master
然后返回您的项目存储库文件夹(dist的父级,当前在dev分支上),添加,提交和推送(以记录子模块dist的新状态)