使用git贡献

时间:2009-12-08 22:01:51

标签: git workflow github

所以我在github克隆了一个项目并修复了补丁。由于这是我第一次使用git,我试图找出最好的在线方式。

在github上签出我自己的(克隆的)存储库后,只有一个分支: master 。我创建了一个分支 myfix ,它现在拥有一个提交,这是bug的修复。

  • 我现在应该一切推送到github上的克隆项目吗?我假设这将在我的github项目中创建包含该单个修复提交的分支 myfix
  • 我应该将 myfix 合并到分支中,删除 myfix 然后推送一切吗?

在线搜索时,似乎常见/良好的做法是保持 master 不受影响,纯粹用于从真实/原始公共项目存储库中提取(即,其他人接受了贡献等等) )。但其他人提出了其他策略:

  • 创建一个上游分支,将您的干净和准备好的贡献放在那里,以便其他人可以轻松找到它们,而不是将它与我​​的其他不完整/实验分支混合起来(我想知道为什么这些甚至会在线他们太不完整了。)
  • 创建下游分支,此处的其他更改以进行离线合并。

如果我遵循以上两个(虽然目前感觉有点矫枉过正)主分支的目的是什么?

Git可以执行上述任何组合(或全部)。这让我对如何轻松地向别人展示我的作品感到困惑。是否有这样的“常见”工作流程?或者它是每个人为自己而你在问题跟踪器中针对固定错误发布特定分支(推送)的具体修订?

2 个答案:

答案 0 :(得分:7)

当您克隆存储库时,Git会自动创建remote tracking branches,以执行您为分支所描述的内容。您可以使用以下命令列出这些远程跟踪分支:

git branch -r

由于已经为您完成了对上游存储库的跟踪,因此您通常会使用分支来更改项目的主线。这是我在你的特殊情况下会做的事情:

  • myfix 分支合并到克隆中的 master 中。 (在“主题分支”中完成此操作是一种很好的做法。)
  • master 分支推送到Github。 (目前还不清楚你是分叉原始存储库,还是只是克隆它。你需要分叉原始存储库,创建自己的副本,以便下一步工作。)
  • 将Github pull request发送给您分叉的存储库的所有者。

答案 1 :(得分:5)

Github允许您将pull requests发送给其他存储库的所有者,并且请求说明在哪里可以找到您感兴趣的更改。这意味着您不必将所有更改保留在特定的知名分支中。

让对方轻松一点就会增加你的补丁被接受的机会,所以保持一个干净的主人作为一个共同的参考点,并在主人的分支上做出改变。保持你的分支狭窄:不要​​在一个分支中堆积113个新功能,而是将它们分开,以便干净利落。