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

uhb*_*f19 2 git github git-branch git-fork

许多github repos需要在每个基本代码更改上创建一个分支.

这与git中的分支完全一样.

为什么github引入分叉?

Mar*_*air 14

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

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

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

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

  • @ uhbif19:顺便说一句,我认为这只是你帖子中的一个错字,但是由于你在那个评论中重复了这一点,我应该指出它们是"分支"而不是"早午餐". (2认同)

San*_*ndy 10

为了解释一下你的问题"为什么我不能把我的分支推到他们的回购中?",考虑一下即使github让你可以做到这一点而不会破坏每个人的整个回购,大多数维护者仍然会他们干净的回购变成了数十个或数百个分支的倾倒场,我们不高兴.

看到这些分支机构的其他贡献者会认为上游开发人员正在研究这些分支机构,即使他们真的是从第三方那里长期放弃的半成品贡献.

有趣的是,无论哪种方式,您的工作流程都是完全相同的,只需在上游仓库的某个点上单击"分叉"按钮即可.

相比:

  1. git clone git://github.com/somebody/someproject
  2. git checkout -b mycoolfeature
  3. 黑客入侵黑客攻击
  4. git push origin mycoolfeature
  5. 提交mycoolfeature分支的拉取请求

VS

  1. 点击github.com/somebody/someproject上的"fork"
  2. git clone git://github.com/you/someproject
  3. git checkout -b mycoolfeature
  4. 黑客入侵黑客攻击
  5. git push origin mycoolfeature
  6. 提交mycoolfeature分支的拉取请求

在创建fork时,确实没有任何开销.

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

  1. 点击fork
  2. cd someproject(你现有的克隆)
  3. git remote add myfork git://github.com/you/someproject
  4. git checkout -b mycoolfeature
  5. 黑客入侵黑客攻击
  6. git push myfork mycoolfeature
  7. 提交mycoolfeature分支的拉取请求

希望这可以帮助!