如何将 GitHub wiki 存储为源代码的一部分

2024-04-05

GitHub(以及许多git服务器(例如 GitLab)提供项目级 wiki,其中通常包含 markdown(*.md)文件被存储并形成......好吧......你的项目的wiki。

这将是so cool如果有一种方法可以将您的 wiki 存储为主项目源代码的一部分,这样当您将更改推送到主项目时,您的 wiki 也会随之更改(当然,如果您对 wiki markdown 文件进行了更改)。

就像是:

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

有什么办法可以做到这一点吗?我看到 wiki 有克隆 URL,这意味着它们被视为单独的 Git 项目。有什么办法可以将两者结合起来吗?


正如@larsks 在评论中提到的,您可以使用GitHub 页面 https://pages.github.com/对于这样的事情。但是,如果没有一些额外的工具,文档将需要位于主项目的单独分支(“gh-pages”)中。然而,有几种方法可以将两者融合在一起,并且一些解决方案只需稍加调整即可与其他 Git 主机一起使用。

gph-导入

方便的工具ghp 导入 http://jekyllrb.com/实际上需要docs/目录(或您指向的任何目录)并将其复制到 gh-pages 分支(并且可以选择推送到 GitHub)。正如 GitHub Pages 使用的Jekyll https://en.wikipedia.org/wiki/Jekyll_%28software%29在幕后,如果你有你的文件docs/配置为 Jekyll 项目,任何时候运行ghp-import命令,您对文档的更改将提交到“gh-pages”分支。当这些更改被推送到 GitHub 时,他们会在 Markdown 文件上运行 Jekyll,并使用渲染的 HTML 更新网站。

当然,这个解决方案存在一些问题。首先,它是 GitHub 特定的,其次,它管理“gh-pages”分支的提交历史记录(请参阅warning https://github.com/davisp/ghp-import#big-fat-warning在文档中)。

git 子树

也许更通用的解决方案是使用git 子树 https://github.com/apenwarr/git-subtree,它可以将子目录的历史记录复制(并保留)到单独的分支。它只会复制影响指定子目录的提交。此外,任何包含指定子目录和源代码其他部分中的更改的提交仅包含对子目录的更改。我写了一篇完整的文章如何使用它 https://gist.github.com/waylan/4505033不久前使用 GitHub Pages。

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

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

不使用 GitHub

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

不使用 Jekyll

即使 GitHub Pages 也不要求您使用 Jekyll 来呈现文档。如果您将已渲染的 HTML 推送到 GitHub Pages,它们将正常工作。各种各样的静态站点生成器 https://www.staticgen.com/ (更多这里 https://staticsitegenerators.net/)提供这种功能。例如,一个流行的项目,MkDocs http://www.mkdocs.org/,将把 Markdown 文档放在你的docs/dir 并将它们渲染为 HTML。然后,您可以将这些渲染的文档上传到各种托管服务。

这个答案已经非常接近推荐特定工具了,所以我就到此为止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 GitHub wiki 存储为源代码的一部分 的相关文章

  • 如何从“git log”中查看 Git 中的特定版本?

    My git log显示为 enter code here git trial git log commit 4c5bc66ae50780cf8dcaf032da98422aea6e2cf7 Author king lt email pro
  • GitHub 未显示存储库中使用的语言

    我在 GitHub 上上传了 java 的 android studio 项目 但它没有显示语言部分 如何添加语言部分 为什么 GitHub 无法检测存储库中使用的语言 存储库链接 https github com QAZIMAAZARSH
  • 如何更改 Bitbucket 中的 git 提交消息?

    我需要更改 Bitbucket 中的旧 git 提交消息 我试过git rebase i并重写了我的消息 但是当我拉取并提交时 它只是将旧消息保留在 Bitbucket 中并合并了我的更改 这基本上是 4 个步骤的过程 但如果多个团队成员在
  • 全局 git 配置数据存储在哪里?

    使用时git config global要进行设置 它将写入哪个文件 Example git config global core editor blah 我在这些地方找不到它 C Program Files Git etc gitconf
  • 如何终止当前正在运行的git进程? [复制]

    这个问题在这里已经有答案了 git commit m 45 fatal Unable to create F SoftifyBD Projects proj 4 CMS Latest contentmanagementsystem git
  • 克隆包含所有子模块的 git 存储库

    我有一个工作 git 存储库 其中包含几个子模块 通过克隆不同的存储库获得 现在 我想要复制整个存储库 包含所有子模块 通过使用推送或克隆到另一台机器上的裸 git 存储库 我很高兴失去子模块的历史记录 我只是对保留它们的内容感兴趣 这可能
  • 如何在 Angular 模板中嵌入 GitHub gist?

    角度忽略script其模板中包含标签 但加载 GitHub gist 需要它们 执行此操作的最佳做 法是什么 使用iframe 创造script动态标记 或者是其他东西 一种方法是创建一个iframe with script里面并在你希望你
  • Git 子模块在 Windows 上更新缓慢

    Git 子模块在 Windows 上似乎非常慢 为了测试性能 我创建了 3 个裸存储库并向它们提交了 3 条独立消息 未存储文件 然后 我将每个裸存储库作为子模块添加到新的 git 存储库中 并执行子模块更新 花费了 5 秒多的时间 当使用
  • git push origin 分支名总是推送到 master

    我搜索了一下 但似乎找不到答案 在我可以访问的两个盒子上 当我执行 git push dry run origin mytestbranch 时 我得到以下结果 To email protected cdn cgi l email prot
  • Hudson 结帐卡在“git fetch”处

    我正在使用 git 版本 1 6 2 2 1669 g7eaf8 在 Hudson 1 314 上使用 Hudson Git 插件 0 7 3 当我触发构建时 Hudson 执行 git fetch 但它永远不会返回 我把一只卡在那里14天
  • Git ref master 现在为空,如何恢复?

    我不完全确定发生了什么 但由于某种原因 我的 git 存储库的主引用文件现在是空的 我们在 Dropbox 上托管存储库 所以也许与此有关 但现在我无法从中提取 它是这么说的 Your configuration specifies to
  • git分支和标签如何存储在磁盘中?

    我最近检查了我工作中的一个 git 存储库 其中有 10 000 多个分支和 30000 多个标签 新克隆后 存储库的总大小为 12Gigs 我确信没有理由拥有 10000 个分支机构 所以我相信它们会占用磁盘中相当大的空间 所以 我的问题
  • 我可以为 GitHub Pages 创建多个存储库吗?

    我创建了一个用于在 GitHub 上托管博客的存储库 有什么方法可以创建额外的存储库来托管多个博客 或者我仅限于一个存储库 因为用户名 github io只能使用一次吗 您可以将一个站点发布到https
  • 有没有办法列出Git中未修改的文件?

    我从另一个来源以 tarball 的形式获取了一些更改 我想知道哪些文件没有更改 目标是 Git 克隆 因此可以轻松查看新增内容和更改内容 有人知道如何获取未更改内容的列表 不包括未跟踪的内容 吗 编辑 换句话说 我希望利用 Git 来查找
  • 判断 Git 提交是否是合并/恢复提交

    我正在编写一个脚本 需要检查特定提交是否是合并 恢复提交 我想知道是否有 git 技巧 到目前为止我想到的 我绝对不想依赖这里的提交消息 是检查HASH 2看看我是否没有收到错误 是否有更好的方法 判断某个东西是否是合并很容易 这是不止一位
  • 使用 Git 的 Spring Cloud 配置服务器 - 无法克隆或签出存储库连接超时

    我正在使用 GIT 在 Spring Cloud Config Server 上进行 POC Spring Boot 1 5 3 RELEASE 爪哇1 8 弹簧工具套件https github com kishornpatil https
  • Git 子模块:[电子邮件受保护]:权限被拒绝(公钥)。致命:无法从远程存储库读取

    我有一个问题git submodule update init remote 我收到错误 权限被拒绝和克隆失败 但我将 SSH 密钥添加到了我的 github 存储库中 我可以拉 推 git 克隆 我拥有所有需要的访问权限 我使用操作系统
  • Git - 推送到远程存储库中的远程跟踪分支

    当简单地做git push到远程存储库 其master分支得到更新 对于非裸存储库来说 这是不希望出现的情况 最近的 Git 版本显示的警告消息清楚地表明了这一点 我希望能够推送到远程存储库 并拥有其之一远程追踪分支进行更新 稍后 当我登录
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • `git rm --cached` 和 `git update-index --assume-unchanged` 之间的区别?

    我不明白之间的区别git rm cached and git update index assume unchanged 我知道git rm cached

随机推荐