你应该在Github上分叉还是分支?

时间:2011-03-22 10:20:38

标签: git github git-branch git-fork

许多github repos需要在每次重要代码更改时创建一个分支。

这就像在git中分支一样。

为什么github引入分叉?

3 个答案:

答案 0 :(得分:14)

(我喜欢git早午餐的想法 - git用户在周日聚会吃了很多油炸食品;)

在github上分支项目并在自己的存储库中进行更改的想法是,项目的所有者不需要信任您或者只允许您对其存储库进行推送访问。如果您希望他们考虑合并您的存储库中的代码,那么您可以向他们发送pull request。 GitHub有一个很好的拉取请求系统,上游开发人员可以查看和评论你的贡献。

在一组受信任的开发人员中,每个人都可以推送到一个共享存储库,您通常会将您开发的每个新功能推送为新主题分支,并要求其他人审核您的工作并将其视为合并。

关于git的许多好处之一是,特定分支提示所在的存储库并不特别重要 - 提交将始终具有相同的SHA1sum,因此您可以根据需要推送和拉动它。如果它在GitHub上的一个分支中或推送到共享存储库或其他任何内容,那无关紧要......

答案 1 :(得分:9)

为了解释一下你的问题“为什么我不能把我的分支推到他们的回购中?”,考虑一下,即使github让你有可能做到这一点而不会为每个人打破整个回购,大多数维护人员仍然不满意他们的清洁回购变成了数十个或数百个分支机构的倾销场。

看到这些分支机构的其他贡献者会假设上游开发人员正在研究这些分支机构,即使他们是第三方长期放弃的半完成贡献。

有趣的是,无论哪种方式,您的工作流程都是完全相同的,只需在上游仓库的某个位置单击“fork”按钮即可。

比较

  1. git clone git://github.com/somebody/someproject
  2. git checkout -b mycoolfeature
  3. hack hack hack
  4. git push origin mycoolfeature
  5. 提交mycoolfeature分支的拉取请求
  6. VS

    1. 点击github.com/somebody/someproject
    2. 上的“fork”
    3. git clone git://github.com/you/someproject
    4. git checkout -b mycoolfeature
    5. hack hack hack
    6. git push origin mycoolfeature
    7. 提交mycoolfeature分支的拉取请求
    8. 在创建fork时,确实没有任何开销。

      如果您已经拥有上游回购的克隆,并且您担心必须制作新的克隆并浪费一些时间,请尝试以下工作流程:

      1. 点击fork
      2. cd someproject(您现有的克隆)
      3. git remote add myfork git://github.com/you/someproject
      4. git checkout -b mycoolfeature
      5. hack hack hack
      6. git push myfork mycoolfeature
      7. 提交mycoolfeature分支的拉取请求
      8. 希望这有帮助!

答案 2 :(得分:0)

github fork意味着你有一个github repo,所以你可以将更改推送到此。这意味着您所做的更改在github上可见,但原始所有者不需要包含它们。

创建一个fork为您提供了一个可写的存储库版本。

在这方面,分支与叉子完全不同。 fork可以有很多分支。