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

时间:2017-06-03 01:02:35

标签: git github git-branch github-pages

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

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

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

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

4 个答案:

答案 0 :(得分:0)

你必须添加doc目录,git add - A,然后执行" git commit -m"测试消息" --dry-run",检查,确保dir不被排除在git ignore中,

git status还会检查正在跟踪的内容

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

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

答案 1 :(得分:0)

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

  • 一个用于master分支和常规开发
  • 一个用于您的gh-pages分支,以及用于生成的文档的内容

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

答案 2 :(得分:0)

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

#!/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下的所有当前暂存文件(并且没有其他文件)。

答案 3 :(得分:0)

我使用它(我在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