将文档提交到 git 分支(gh-pages)



我已经在我的 git 项目工作目录中的/docs目录中从 javadoc 生成了文档。

我想通过将其提交到我的存储库的gh-pages分支来github.io提供此文档(这将使它自动在http://username.github.io/projectname中可用)。

不过,不知道该怎么做。如果我使用git checkout切换到gh-pages,我的工作目录的所有内容都将切换到gh-pages的内容,对吗?这将从中删除/docs目录。

我可以在其他地方复制/docs并在切换到 gh-pages 后将其复制到工作目录,但这是否意味着我每次想要更新文档时都必须检查复制/docs、切换分支、再次复制、提交、切换回master分支的手动过程?我认为有一个更好的解决方案,但我不知道它可能是什么。

你必须添加文档目录,git add - A,然后做"git commit -m "Test msg" --dry-run",检查,确保目录没有被排除在外 在 git 忽略中,

Git 状态还会检查正在跟踪的内容

然后需要推送,并设置要推送到的上游分支。

git add -A,添加项目目录中的所有内容

您可以使用 git worktree 命令来管理多个文件夹中的多个工作树(而无需多次克隆存储库):

  • 一个用于您的master分支和通常的发展
  • 一个用于
  • 您的gh-pages分支,一个用于您生成的文档的内容

这样,当您从第一个工作树生成文档时,您可以请求在第二个工作树中生成该文档输出。生成后,转到第二个文件夹,添加、提交和推送。

可以手动创建树并提交对象,而不会影响工作目录或索引。例如

#!/bin/sh -e
. "$(git --exec-path)/git-sh-setup"
STAGE=$(mktemp -t gh-pages.XXXXXXXX)
trap 'rm -f "${STAGE}"' EXIT
GIT_INDEX_FILE=${STAGE} git read-tree --empty
git ls-files -s -z docs | GIT_INDEX_FILE=${STAGE} git update-index -z --index-info
TREE=$(GIT_INDEX_FILE=${STAGE} git write-tree)
COMMIT=$(git commit-tree -p refs/heads/gh-pages -m 'Updated docs' "${TREE}")
git update-ref refs/heads/gh-pages "${COMMIT}"

此脚本将向gh-pages分支添加新提交,该分支包含docs下的所有当前暂存文件(没有其他文件)。

我使用它(我放入在 master 中提交的脚本)来达到相同的结果,并且效果很好!

git commit -am "Save local changes"
git checkout -B gh-pages
git add -f docs
git commit -am "Rebuild website"
git filter-branch -f --prune-empty --subdirectory-filter docs && git push -f origin gh-pages && git checkout master

最新更新