代码之家  ›  专栏  ›  技术社区  ›  reprogrammer

GitHub中的分叉与分支

  •  243
  • reprogrammer  · 技术社区  · 15 年前

    我想知道更多关于分叉github项目与创建github项目分支的优缺点。

    4 回复  |  直到 15 年前
        1
  •  297
  •   Community Mohan Dere    9 年前

    您不能总是创建一个分支或拉一个现有的分支并将其推回,因为您没有注册为该特定项目的协作者。

    在GitHub服务器端 :

    • 没有直接推回的可能
    • 具有 fork queue 添加了用于管理合并请求的功能

    • 将原始项目添加为远程
    • 定期从原来的项目中提取
    • 在你从那次获取中更新的感兴趣的分支上重新调整你当前的开发。

    我们的目标是允许合作,即使 参与并不总是可能的。


    你在GitHub端克隆的事实意味着你现在 “central”存储库(“central”在多个合作者中可见)。
    如果您可以直接将它们添加为

    fork on GitHub

    合并的经验大致相同,但有一个额外的间接层次(先推货叉,然后要求拉货,原始回购的演变风险使你的快进合并不再快进)。
    这意味着正确的工作流程是 git pull --rebase upstream git push --force origin ,为了以这种方式重写历史,您自己的提交总是位于原始(上游)repo的提交之上。

    另请参见:

        2
  •  76
  •   Aidan Feldman dariober    9 年前

    以下是高层差异:

    赞成的意见

    • 按用户分隔分支

    欺骗

    • 在分支上协作更为棘手(fork所有者需要将此人添加为协作者)
    • 您需要理解Git中多个远程设备的概念
      • 需要额外的心理簿记
      • 这将使工作流程更加困难的人谁不是超级舒适的Git

    分支

    • 将围绕项目所做的所有工作放在一个地方
    • 所有协作者都可以推送到同一个分支上进行协作
    • 只有一个Git遥控器需要处理

    • 被遗弃的树枝更容易堆积起来
    • 您需要将团队成员添加为贡献者,然后他们才能分支
        3
  •  46
  •   Bruno    15 年前

    它与Git的一般工作流程有关。您不太可能直接推送到主项目的存储库。我不确定GitHub项目的存储库是否支持基于分支的访问控制,例如,您不想授予任何人推送到主分支的权限。

    • 将GitHub存储库克隆到本地计算机上
    • (可选)将原始存储库添加为本地存储库上的附加远程存储库。然后,您将能够直接获取在该存储库中发布的更改。
    • 联系项目的维护人员,让他们获取您的更改并检查/合并,然后让他们推回到项目的存储库(如果您和他们愿意的话)。

    没有这一点,公共项目让任何人直接推动自己的承诺是很不寻常的。

        4
  •  10
  •   Community Mohan Dere    5 年前

    Forking从现有存储库创建一个全新的存储库(只需在gitHub/bitbucket上进行git克隆)

    最好使用fork:当拆分的目的是创建一个逻辑上独立的项目时,它可能永远不会与其父项目重新结合。

    分支策略在现有/工作存储库上创建一个新分支

    更具体地说:- 在开放源代码项目中,由存储库的所有者决定谁可以推送到存储库。然而,开源的理念是每个人都可以为项目做出贡献。

    分叉的核心与功能分支类似,但不是创建分支,而是生成存储库的分叉,而是创建拉请求,而不是执行合并请求。

    以下链接以很好的解释方式提供了区别:

    https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/

    https://buddy.works/blog/5-types-of-git-workflows

    http://www.continuousagile.com/unblock/branching.html

    推荐文章