如何将GitHub wiki集成到主项目中
我希望将所有源代码和文档保存在一个git存储库中。我已经将github页面集成到我的主项目中,现在我想对github wiki做同样的事情 我知道github Wiki是简单的git存储库。我的计划是将wiki作为远程设备添加到我的主repo中,并将所有内容保存在一个地方。然而,在wiki repo中,所有内容都在根目录中,因此会使我的主项目变得混乱如何将GitHub wiki集成到主项目中,git,github,wiki,Git,Github,Wiki,我希望将所有源代码和文档保存在一个git存储库中。我已经将github页面集成到我的主项目中,现在我想对github wiki做同样的事情 我知道github Wiki是简单的git存储库。我的计划是将wiki作为远程设备添加到我的主repo中,并将所有内容保存在一个地方。然而,在wiki repo中,所有内容都在根目录中,因此会使我的主项目变得混乱 以前有人试过这个吗?处理此问题的最佳方法是什么?您希望将wiki添加为一个。与远程连接相同的Wiki git repo,但位于具有自己的.git目
以前有人试过这个吗?处理此问题的最佳方法是什么?您希望将wiki添加为一个。与远程连接相同的Wiki git repo,但位于具有自己的.git目录的子目录中
git submodule add git://github.com/you/proj.wiki
在主repo的根目录中,将wiki repo添加为wiki/dir中的子模块。您可以创建一个包含wiki repo的子模块,或者定期获取并来回切换分支。我觉得这一切都非常乏味-在我看来,github wiki应该是主存储库的分支,或者至少应该有可能让这成为一种选择 尽管如此,我认为最好的解决方案是简单地将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/"
git pull -s subtree wiki master
你甚至可以让维基在一边工作,以欢迎公众的贡献,但是如果你认为合适的话,可以在你的主要文档中审查它们。要在after review中合并新更改,请执行以下操作:
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/"
git pull -s subtree wiki master
不幸的是,以另一种方式合并更改有些棘手,而且无论如何,您可能应该一次性完成此操作,然后关闭wiki,或者重定向到repo源
此外,这种方法的一个主要警告是,git log wiki/Home.md
(例如)实际上并不显示wiki页面中的历史记录。历史记录在那里,但不知何故,git log
无法跟踪它。这是一个与git子树相关的问题。解决此问题的另一个解决方案是执行过滤器分支
和定期合并,一次保存历史记录
对我来说,将wiki作为主源代码树的一部分的主要优点是,可以跨代码和文档协调请求和更改。这也使得随代码一起发布文档变得非常简单,而不是假设人们只是在线阅读文档…您可以将wiki存储库的副本放入主存储库中,并与它们并行工作:
$git init
$git远程添加-m主源git@github.com:/.git
$git add。
$git commit-m“初始提交”
$
$cd wiki
$git init
$git远程添加-m主源git@github.com:/.wiki.git
$git add。
$git commit-m“初始wiki提交”
$
$git推送-uf原始主机
$cd。。
$git推送-u原始主机
这种方法结合了其他答案中建议的子模块和子树的优点,但不会使工作流复杂化:它允许您在主存储库中拥有wiki文件,在拉取请求中查看它们,并轻松地将它们推送到或从wiki中拉取
要将现有存储库的内容添加到另一个存储库中,您需要删除.git
文件夹一段时间(否则git会将其作为子模块添加):
这只是一个一次性问题,以后可以像往常一样添加任何文件
请注意,wiki存储库的.git
文件夹不会包含在主存储库中。描述如何在克隆此类存储库后还原它。我使用了子模块。谢谢你的回答。维基作为一个子模块,你的情况如何?我想做一些类似的事情,但我还没有对子模块业务了如指掌。这将如何处理分支和合并,因为我希望我的代码中有一个“开发”分支,用于wiki,所以当我将其与主分支合并时,它也会将更改合并到live wiki分支中。但是将其作为子模块有什么意义呢?其他人无论如何都不能修改或使用它。你能在github之外的任何地方使用它吗?我的意思是,你可以把它放在一个单独的目录中,作为github repo,并且简单地说。github从主repo中忽略这个目录。现在它实际上是
git://github.com/you/proj.wiki
这是否允许您在wiki中所做的更改在“图形”选项卡中可见?因此,现在我可以开始编辑cd proj.wiki了吗?那么,在编辑完我想要的内容之后,我该怎么办呢?在我的案例中,我仍然需要git push
将我的wiki文件夹完全提交到主项目repo。不确定原因,但git log wiki/
不会使用此技术显示wiki的历史记录。我不明白为什么,因为git log--所有的都显示了这些更改。。。