Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将GitHub wiki集成到主项目中_Git_Github_Wiki - Fatal编程技术网

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

如何将GitHub wiki集成到主项目中,git,github,wiki,Git,Github,Wiki,我希望将所有源代码和文档保存在一个git存储库中。我已经将github页面集成到我的主项目中,现在我想对github wiki做同样的事情 我知道github Wiki是简单的git存储库。我的计划是将wiki作为远程设备添加到我的主repo中,并将所有内容保存在一个地方。然而,在wiki repo中,所有内容都在根目录中,因此会使我的主项目变得混乱 以前有人试过这个吗?处理此问题的最佳方法是什么?您希望将wiki添加为一个。与远程连接相同的Wiki git repo,但位于具有自己的.git目

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

我知道github Wiki是简单的git存储库。我的计划是将wiki作为远程设备添加到我的主repo中,并将所有内容保存在一个地方。然而,在wiki repo中,所有内容都在根目录中,因此会使我的主项目变得混乱


以前有人试过这个吗?处理此问题的最佳方法是什么?

您希望将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--所有的
都显示了这些更改。。。