如何将 GitHub wiki 集成到主项目中

问题描述 投票:0回答:5

我想将所有源代码和文档保存在一个 Git 存储库中。我已经将 GitHub 页面集成到我的主要项目中,现在我想对 GitHub wiki 做同样的事情。

我知道 GitHub wiki 是纯 Git 存储库。我的计划是将 wiki 作为远程添加到我的主存储库并将所有内容保存在一个地方。然而,在 wiki 存储库中,所有内容都在根目录中,因此会使我的主项目混乱。

处理这个问题的最佳方法是什么?

git github wiki
5个回答
40
投票

您想将 wiki 添加为 submodule。相同的 Wiki Git 存储库作为远程连接,但位于具有自己的 .git 目录的子目录中。

git submodule add git://github.com/you/proj.wiki

在主存储库的根目录中,将 wiki 存储库作为子模块添加到 wiki/ 目录中。


7
投票

我觉得这一切都很乏味。在我看来,GitHub wiki 应该是主存储库的分支,或者至少应该可以将其作为一个选项。

尽管如此,我认为最好的解决方案是简单地将移动维基到主存储库中,比如在

docs/
wiki
中,使用子树合并。例如,假设您的存储库是
you/proj
,您的 wiki 将位于:
git://github.com/you/proj.wiki
。然后将它合并到你的主存储库中,你会这样做:

git clone git://github.com/you/proj
cd proj
git remote add -f wiki git://github.com/you/proj.wiki
git merge -s ours --no-commit --allow-unrelated wiki/master
git read-tree --prefix=wiki/ -u wiki/master
git commit -m "Github wiki subtree merged in wiki/"

您甚至可以让 wiki 在旁边工作以欢迎那里的公众贡献,然后在您认为合适的时候将它们审查到您的主要文档中。要在审核后合并新更改,您可以:

git pull -s subtree wiki master

不幸的是,以另一种方式合并更改有点棘手,无论如何,您应该一次性完成此操作,然后关闭 wiki,或重定向到 repo 源...

此外,这种方法的一个主要警告是

git log wiki/Home.md
(例如)实际上并没有显示维基页面的历史记录。历史在那里,但不知何故
git-log
无法追踪它。这是与 git 子树相关的已知限制。解决此问题的另一种解决方案是执行一次
filter-branch
和定期合并,以保留历史记录。

对我来说,将 wiki 作为主要源代码树的一部分的主要优点是可以跨代码和文档协调拉取请求和更改。这也使得将文档与您的代码一起发送变得非常简单,而不是假设人们只会在线阅读它......


2
投票

您可以创建一个包含 wiki 存储库的 submodule,或者定期获取并来回切换分支。


0
投票

您可以将 wiki 存储库的副本放入您的主存储库并并行使用它们:

git init
git remote add -m master origin [email protected]:<owner>/<repo>.git
git add .
git commit -m 'Initial commit'

cd wiki
git init
git remote add -m master origin [email protected]:<owner>/<repo>.wiki.git
git add .
git commit -m 'Initial wiki commit'

git push -uf origin master
cd ..
git push -u origin master

这种方法结合了其他答案中建议的子模块和子树的优点,但它并没有使工作流程复杂化太多:它允许您在主存储库中拥有 wiki 文件,在拉取请求中查看它们并轻松将它们推送到或从 wiki 中提取。

要将现有存储库的内容添加到另一个存储库中,您需要暂时删除

.git
文件夹(否则 Git 会将其添加为子模块):

mv wiki/.git/ wiki/.git__/ && git add wiki/* && mv wiki/.git__/ wiki/.git/

这只是一次性问题,任何未来的文件都可以照常添加。

请注意,wiki 存储库的

.git
文件夹不会包含在您的主存储库中。
这个答案 描述了如何在克隆这样的存储库后恢复它。


0
投票

现在,在 2023 年,只需要 3 个命令:

git clone https://github.com/youName/ProjectName.wiki docs
git submodule add https://github.com/youName/ProjectName.wiki docs
git submodule update --init

这将创建一个从 docs 文件夹到 Github 上项目的 Wiki 存储库的链接。不要使用“git://”,它已经过时了!到处使用“https://”!

© www.soinside.com 2019 - 2024. All rights reserved.