GitHub 中的分叉与分支

问题描述

你不能总是创建一个分支或拉一个现有的分支并推回它,因为你没有注册为那个特定项目的合作者。

分叉只不过 的克隆:

  • 没有直接推回的可能性
  • 添加 功能来管理合并请求

您可以通过以下方式使 fork 与原始项目保持同步:

  • 将原始项目添加为远程
  • 定期从该原始项目中获取
  • 在您从该获取更新的感兴趣的分支之上重新确定您当前的开发。

rebase 允许您确保您的更改是简单的(无需处理合并冲突),当您希望原始项目的维护者将您的补丁包含在他的项目中时,使您的拉取请求更加容易。

目标实际上是允许协作,即使 直接 参与并不总是可能的。


您在 GitHub 端克隆的事实意味着您现在有 两个 “中央”存储库(“中央”作为“对多个协作者可见)。 如果您可以将它们直接添加一个 项目的协作者,则无需管理另一个项目一个用叉子。

在 GitHub 上分叉

合并体验将大致相同,但具有额外的间接级别(首先推动分叉,然后要求拉动,原始回购的演变风险使您的快进合并不再快进) . 这意味着正确的工作流程是git pull --rebase upstream(将您的工作重新建立在来自上游的新提交之上),然后git push --force origin,为了以这样一种方式重写历史记录,您自己的提交总是在来自原始(上游)回购的提交之上.

解决方法

我想更多地了解分叉 github 项目与创建 github 项目分支的优缺点。

分叉使我的项目版本与原始版本更加隔离,因为我不必在原始项目的合作者列表中。由于我们正在内部开发一个项目,因此添加人员作为协作者没有问题。但是,我们想了解分叉项目是否会使合并更改回主项目变得更加困难。也就是说,我想知道分支是否让两个项目更容易保持同步。换句话说,当我分支时,在我的主项目版本和主项目之间合并和推送更改是否更容易?