192

我在GitHub 上看到了一个未打开编辑的 wiki 页面。然后我分叉了这个项目,在“我的结束”上对其进行了编辑,并尝试做一个拉取请求。事实证明,wiki不在项目中,也没有办法对其进行更改。

在这种情况下,如果我想建议对 wiki 进行更改,除了电子邮件之外,还有其他方法可以继续吗?

在这一点上,我在“具有相似标题的问题”下发现了一个看起来像是替代方案的东西,但是我还不能用它来做拉取请求,所以我不确定子模块是否是实现这个目的的好方法。我现在看到我可能会以某种方式分支它......所以这是要走的路吗?

4

5 回答 5

139

GitHub不支持对 wiki 存储库的拉取请求,仅支持主存储库(这有点可惜,IMO,但我能理解)。

这是一个项目管理其 wiki 的社区更新的一种有趣方式,同时仍保持严格的控制,至于源代码:

我建议的工作流程是这样的:

  1. 在您的 Github 帐户上手动创建 Taffy wiki 的分支:
    • 在您的 github 帐户上创建一个新的存储库。我们称之为“Taffy-Wiki”。
    • 将 Taffy wiki repo 克隆到本地计算机的某个位置:git clone git@github.com:atuttle/Taffy.wiki.git
    • 删除原始的“origin”遥控器并将您的 github repo 添加为新的“origin”git remote rm origingit remote add origin git@github.com:<YOUR_USERNAME>/Taffy-Wiki.git
  2. 在本地进行您提议的更改,然后将它们推送到您的 github 帐户:git push -u origin master('-u origin master' 仅第一次需要;之后只需执行git push
  3. 向官方 Taffy 问题跟踪器提交工单,要求我审查您的更改并将其合并。请确保包含指向您的存储库的链接并描述您所做的更改。
  4. 转到#2

(来自 如何为 Taffy 文档做出贡献。)

如果是我,我会在主存储库(即您分叉的存储库)中创建一个问题,建议对 wiki 进行更新。如果未启用问题,那么电子邮件是我能想到的唯一其他选项。

于 2012-07-14T07:27:52.153 回答
17

到目前为止,我们在https://devonfw.com中找到了该问题的最佳解决方案:

  1. 将您的文档与文档文件夹中的代码一起放入 git 存储库。
  2. 使用一些魔法扩展您的 travis-ci 构建,该魔法会将该文档文件夹中的所有更改分阶段并将转换应用于 wiki git。请参阅下面的最后一个示例链接。
  3. 将 wiki 视为文档的只读视图。请注意,使用 github.com,您仍然可以查看和直接编辑文档文件夹中的文件。因此,您仍然可以在几秒钟内修复浏览器中的拼写错误(即使在没有 repo 权限的情况下作为 PR)——只是不是通过 wiki。
  4. 当贡献者分叉时,他还拥有包含代码的文档。他可以在一个 PR 中同时更改所有内容,并在同一过程中对所有内容进行审核,因此在合并后代码和文档保持同步。你仍然有更好的用户体验来阅读带有侧边栏等的 wiki 文档。

由于我们是 100% 的 OSS,因此我们喜欢​​分享我们为实现这一伟大解决方案所做的努力。以下是链接示例:

于 2019-11-04T11:36:47.870 回答
6

我对此采取了不同的方法,即将完全相同的内容推送到主 repo 和 wiki 中。这不会符合每个人的口味,但Risk-First主要是一个 wiki,主 repo 中有一些 Jekyll 页面。

这意味着拉取请求/分叉过程可以正常工作。但是,在合并拉取请求后,我必须执行额外的步骤,即拉取到本地存储库,然后推送到主存储库和 wiki,git 支持多个源 URL:

localhost:website robmoffat$ git remote show origin
* remote origin
  Fetch URL: git@github.com:risk-first/website.git
  Push  URL: git@github.com:risk-first/website.wiki.git
  Push  URL: git@github.com:risk-first/website.git
  HEAD branch: master

为了实现这一点,我合并了两个 repos 的提交,如下所示:

如何合并两个 Git 存储库?

然后像这样推送到两个仓库:

Git - 将代码推送到两个遥控器

希望这可以帮助某人。

于 2019-01-06T11:19:53.943 回答
5

您不能发出拉取请求,但您可以打开一个问题,将链接粘贴到您的 wiki 页面,然后让他们在您的 wiki 页面中合并到他们的 wiki 页面。

简而言之:

他们只需要克隆您的 wiki 页面 repo ( git clone YOUR_FORKED_REPO.wiki.git),将您的所有 wiki 提交压缩为一个大提交,然后将这个大的压缩提交精选到他们的 repo 中。这会将您所有的 wiki 更改引入他们的 wiki。

完整说明:

(从 Larry Botha 的 github 要点这里复制:https ://gist.github.com/larrybotha/10650410 ):

从分叉的 Github 存储库中合并 Wiki 更改

这是受 Roman Ivanov 的How To Merge Github Wiki Changes From One Repository To another的启发(或基本上是复制的),并用于确保如果原始文章发生某些事情,信息在这里仍然很好且安全。

术语

OREPO : original repo - 由所有者创建或维护的repo

FREPO:可能对其 wiki 进行了更新的分叉存储库,但尚未在OREPO上

贡献

如果您想为已分叉的仓库的 wiki 做出贡献,请执行以下操作:

  • 分叉回购
  • 仅将 wiki 克隆到您的计算机: $ g clone [FREPO].wiki.git
  • 更改您的本地分叉 wiki 存储库
  • 将您的更改推送到 GitHub

一旦您准备好让作者知道您有更改,请执行以下操作:

  • 在OREPO上打开一个问题
  • 提供指向您 wiki 的 git 存储库的直接链接,以便于合并:即 [ FREPO ].wiki.git

合并更改

作为OREPO的所有者,您现在收到一条消息,说明您的 wiki 在其他人的FREPO上有更新。

如果 wiki 更改是从最新的OREPO wiki 派生的,您可以执行以下操作:

$ git clone [OREPO].wiki.git
$ cd [OREPO].wiki.git

# squashing all FREPO changes
$ git pull [FREPO].wiki.git master

$ git push origin master

如果OREPO wiki 领先于FREPO的分支,请执行以下操作:

$ git clone [OREPO].wiki.git
$ cd [OREPO].wiki.git
$ git fetch [FREPO] master:[FREPO-branch]
$ git checkout [FREPO-branch]

#checkout to last OREPO commit
$ git reset --hard [last-OREPO-commit-hash]

# do massive squash of all FREPO changes
$ git merge --squash HEAD@{1}
$ git commit -m "Wiki update from FREPO - [description]"
$ git checkout master

# cherry-pick newly squashed commit
$ git cherry-pick [OREPO-newly-squashed-commit]
$ git push
于 2019-06-28T17:00:21.637 回答
0

如果您可以拥有一个单页长文档(我实际上更喜欢它),您可以劫持README.MD并将 wiki 的内容放在那里。

它不仅将作为正常存储库的一部分进行跟踪,还将显示在主页上。

可以从快速参考开始,然后进入更详细的描述/说明,以便普通用户首先点击更通用的信息。

于 2016-12-21T14:35:10.710 回答