【问题标题】:How Does GitHub Merge Web-Based Wiki Edits With Ones Through The Repository?GitHub 如何通过存储库合并基于 Web 的 Wiki 编辑和编辑?
【发布时间】:2012-05-20 03:39:01
【问题描述】:

我正在考虑向其用户提供对 SaaS 应用程序使用的资源的某种 Git 访问权限的想法。这将允许用户通过 Git 界面以及应用程序的本地基于 Web 的界面编辑和推送内容。我主要关心的是当用户编辑基于 Web 的界面中的内容时如何协调合并冲突(我不太关心来自 Git 界面的合并冲突,因为 Git 和他们的 Git 客户端应该处理这个问题)。这与 GitHub 允许基于 Git 和基于 Web 的访问其 Wiki 的方式非常相似,我很好奇他们如何处理这种情况,作为其他人在提供基于 Web 和基于 Git 的访问时遵循的模式内容。

如果用户通过 Web 界面在 GitHub 上编辑 Wiki 页面,而另一个用户在完成之前将更改推送到 Wiki 存储库分支,那么当他们保存更改时会发生什么?它是使用“最后一个获胜”还是“抱歉,在新版本上重做所有更改”?

我找到了一个 related SO post 讨论了这个问题,但我很好奇 GitHub 是如何具体处理它的,因为它是由 Git 支持的,它已经具有一些合并功能。

【问题讨论】:

  • 我认为最好的办法是在一个示例 github repo 上自己尝试
  • @CharlesB - 我尝试了一些不同的场景,但无法让它在 Web 界面中显示任何内容。我认为它要么是自动合并差异(这似乎在大多数情况下发生),要么通过选择一个或另一个来解决,但这并没有真正给我一个明确的答案,因为我的少数测试可能没有涵盖所有可能的情况。我的猜测是它首先尝试合并,然后在冲突中使用最新的,但我并不肯定。

标签: git merge github merge-conflict-resolution


【解决方案1】:

我正在开发一个 git 支持的 wiki 引擎,类似于 Gollum,名为 Waliki

特别是,它更聪明地合并更改:Waliki 不是硬性的“更新胜利”方法,而是在分离的分支中处理每个版本,并在保存时合并它们。

如果一个页面在一个编辑过程中发生了外部变化,并且 git 可以自动合并它,用户会收到通知。如果合并失败,页面仍会保存,但会重新加载编辑器,要求用户修复冲突。

我很高兴收到一些反馈。

【讨论】:

    【解决方案2】:

    对 GitHub wiki 所做的每项更改,无论是在 Web 界面中还是通过 git 完成,都是它自己在存储库中的提交。

    如果您通过 Web 界面添加、编辑或删除 wiki 页面,然后通过git pull wiki 存储库,您可以通过git history 看到编辑。如果您是 wiki 所属项目的所有者或合作者,您甚至可以使用 git 还原该提交并将更改推送回 GitHub(我个人不得不这样做以恢复被意外删除的页面)。

    对于您描述的情况,似乎(根据this issue)最后一次编辑获胜,而第一次编辑的内容丢失。

    如需更具体的答案,您可能需要查看Gollum 项目,这是 GitHub 用于管理其 git 支持的 wiki 的项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2014-12-13
      • 1970-01-01
      • 2011-01-05
      • 2015-05-11
      • 2018-12-15
      • 1970-01-01
      相关资源
      最近更新 更多