使用 git 子树推送到项目根目录
push with git subtree to project root
我目前正在处理一个 github 页面项目,并将网站生成到名为 dev
的分支上名为 dist
的文件夹中。我想把dist的内容推送到master分支。谷歌搜索我发现 github 子树,我可以使用以下命令将 dist
目录推送到 master
:
git subtree push --prefix dist origin master
问题是这会推送整个目录。所以 master 分支有一个名为 dist
的目录,其中包含 dist/index.html
等。相反,我想将 dist 的所有内容推送到 master 分支。这样master分支就包含了index.html
等所有内容。如何做到这一点?
这并不容易完成(除了做一些 git filter-branch
魔术)
如果您查看“Configuring a publishing source for GitHub Pages”,您应该直接在 gh-pages
分支中生成您的站点。
或者,您可以留在 master
分支,但在 docs/
文件夹而不是 dist
文件夹中生成。
在这两种情况下,Git中心页面将呈现该内容。
然而,对于 User Page:
If your site is a User or Organization Page that has a repository named <username>.github.io
or <orgname>.github.io
, you cannot publish your site's source files from different locations.
User and Organization Pages that have this type of repository name are only published from the master
branch.
在这种情况下,反转您的工作流程:
- 在
dev
分支上开发您的网站,
- 在
master
分支上生成您的网站
当您在 dev
分支中时,您可以将 master
分支声明为子模块(参见 here for the procedure),这因此将显示为 "subfolder"(例如“dist
”子文件夹,但该子文件夹实际上是您在 master
上的相同 Git 存储库)
像往常一样生成您的站点(在 dist
中),进入 dist、添加、提交和推送(该子文件夹是一个子模块,它将推送到其关联的分支:master
)
然后回到你的项目 repo 文件夹(dist
的父文件夹,当前在 dev
分支),添加、提交和推送(记录子模块 dist
的新状态)
我目前正在处理一个 github 页面项目,并将网站生成到名为 dev
的分支上名为 dist
的文件夹中。我想把dist的内容推送到master分支。谷歌搜索我发现 github 子树,我可以使用以下命令将 dist
目录推送到 master
:
git subtree push --prefix dist origin master
问题是这会推送整个目录。所以 master 分支有一个名为 dist
的目录,其中包含 dist/index.html
等。相反,我想将 dist 的所有内容推送到 master 分支。这样master分支就包含了index.html
等所有内容。如何做到这一点?
这并不容易完成(除了做一些 git filter-branch
魔术)
如果您查看“Configuring a publishing source for GitHub Pages”,您应该直接在 gh-pages
分支中生成您的站点。
或者,您可以留在 master
分支,但在 docs/
文件夹而不是 dist
文件夹中生成。
在这两种情况下,Git中心页面将呈现该内容。
然而,对于 User Page:
If your site is a User or Organization Page that has a repository named
<username>.github.io
or<orgname>.github.io
, you cannot publish your site's source files from different locations.
User and Organization Pages that have this type of repository name are only published from themaster
branch.
在这种情况下,反转您的工作流程:
- 在
dev
分支上开发您的网站, - 在
master
分支上生成您的网站
当您在 dev
分支中时,您可以将 master
分支声明为子模块(参见 here for the procedure),这因此将显示为 "subfolder"(例如“dist
”子文件夹,但该子文件夹实际上是您在 master
上的相同 Git 存储库)
像往常一样生成您的站点(在 dist
中),进入 dist、添加、提交和推送(该子文件夹是一个子模块,它将推送到其关联的分支:master
)
然后回到你的项目 repo 文件夹(dist
的父文件夹,当前在 dev
分支),添加、提交和推送(记录子模块 dist
的新状态)