如何将GitHub wiki存储为源

时间:2015-08-12 15:43:37

标签: git github markdown wiki

GitHub(以及许多git服务器,如GitLab)提供项目级wiki,通常是markdown(*.md)文件存储并形成......以及......项目的wiki。

如果有一种方法可以将您的wiki存储为主项目源的一部分,那么会很酷,这样当您将更改推送到主项目时,您的wiki也会发生变化(以及,如果你对你的wiki markdown文件做了更改,那么。

类似的东西:

myproject/
    src/main/resources/
    src/main/groovy/
    build.grade
    docs/
        Home.md
        About_This_Project.md
        etc.

有没有办法实现这个目标?我看到wiki有克隆URL和数字,这意味着它们被视为单独的Git项目。有没有办法把两者结合起来?

3 个答案:

答案 0 :(得分:6)

正如@larsks在评论中所提到的,你可以使用GitHub Pages来做这样的事情。但是,如果没有一些额外的工具,文档将需要位于主项目的单独分支(“gh-pages”)中。但是,有几种方法可以将两者融合在一起,并且一些解决方案可以与其他Git主机一起使用并进行一些调整。

GPH导入

方便的工具ghp-import实际上占用docs/目录(或指向它的任何目录)并将其复制到gh-pages分支(并且可以选择推送到GitHub)。由于GitHub Pages使用Jekyll,如果您将docs/中的文件配置为Jekyll项目,则每次运行ghp-import命令时,您对文档的更改都将被提交到'gh-pages'分支。当这些更改被推送到GitHub时,他们在Markdown文件上运行Jekyll并使用呈现的HTML更新站点。

当然,此解决方案存在一些问题。首先,它是GitHub特有的,其次,它隐藏了`gh-pages'分支的提交历史(参见文档中的warning)。

的git子树

也许更通用的解决方案是使用git-subtree,它可以将子目录的历史记录复制(并保存)到单独的分支。它只会复制影响指定子目录的提交。此外,任何包含指定子目录和源的其他部分中的更改的提交仅包括对子目录的更改。我暂时用GitHub页面对how to use it进行了全面的写作。

排序版本是在您想要更新gh-pages分支(或您正在使用的任何分支)时随时从主分支运行以下命令:

git subtree split --branch gh-pages --prefix docs/
git push origin gh-pages

不使用GitHub

如果您不想使用GitHub,您可以(理论上)使用上述任一工具,并为仅包含您的文档的分支设置不同的远程。然后,在将更改复制到文档分支(可能使用git subtree split命令)之后,您可以将该分支推送到主机的“wiki”存储库。我个人没试过。您的里程可能会有所不同。

不使用Jekyll

即使是GitHub页面也不要求您使用Jekyll来呈现您的文档。如果您已将已呈现的HTML推送到GitHub页面,它们将正常工作。各种static site generatorsmore here)提供此类功能。例如,一个受欢迎的项目MkDocs将在您的docs/目录中使用Markdown文档并将其呈现为HTML。然后,您可以将这些呈现的文档上载到各种托管服务。

这个答案越来越接近于推荐特定工具,所以我会停在这里。

答案 1 :(得分:4)

Source

每个Wiki都提供了一种将其内容克隆到计算机的简便方法。您可以使用提供的URL将存储库克隆到您的计算机:

$ git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.wiki.git

克隆了Wiki后,您可以添加新文件,编辑现有文件并提交更改。您和您的合作者可以在创建Wiki时创建分支,但是只有推送到master分支的更改才会生效,并且可供读者使用。

答案 2 :(得分:3)

GitHub将在其查看器中呈现Markdown个文件,这样您就可以有效地执行此操作而无需执行任何操作。如果你在README.md中添加了一个链接:

 ...to see more info [click Here](docs/SomeFile.md). So on and so forth

然后当有人点击README.md中的链接时,他们将到达正确的位置,文件将在查看器窗口区域中呈现为Markdown。