我已经在我的git项目工作目录的/docs
目录中生成了javadoc的文档。
我想在github.io
将此文档提交到我的存储库的gh-pages
分支(这将使其在http://username.github.io/projectname
自动提供)。
不知道如何去做。如果我使用gh-pages
切换到git checkout
,我工作目录的所有内容都将切换为gh-pages
的内容,对吧?这将从中删除/docs
目录。
我可以在其他地方制作/docs
的副本,并在切换到gh-pages后将其复制到工作目录,但这是否意味着我将不得不重复这个手动复制过程/docs
每次我想更新文档时,切换分支,再次复制,提交,切换回master
分支?我认为有一个更好的解决方案,但我不知道它可能是什么。
答案 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