所以我在github上克隆了一个项目并修复了一个补丁.因为这是我第一次在git工作,我试图找出最好的方式将它上线.
在github上检出我自己的(克隆的)存储库后,只有一个分支:master.我创建了一个分支myfix,它现在拥有一个提交,这是bug的修复.
我现在应该将所有内容推送到github上的克隆项目吗?我假设这将在我的github项目中创建包含该单个修复提交的分支myfix.
我应该将myfix合并到主分支中,删除myfix然后推送所有内容吗?
在线搜索时,似乎常见/良好做法是保持大师不受影响,纯粹用于从真实/原始公共项目存储库(即其他人接受的贡献等)中提取.但其他人建议其他策略:
创建一个上游分支,把你的干净和准备好的贡献放在那里,以便其他人可以轻松找到它们,而不是将它与我的其他不完整/实验分支混合起来(我想知道为什么如果它们如此不完整,它们甚至会在线).
创建下游分支,在此处提取其他更改以进行脱机合并.
如果我遵循以上两个(虽然目前感觉有点矫枉过正)主分支的目的是什么?
Git可以做上述任何组合(或全部).这让我对如何轻松地向别人展示我的作品感到困惑.有这样一个"共同"的工作流程吗?或者它是每个人为自己而你在问题跟踪器中针对固定错误在特定分支(推送)中发布特定修订?
克隆存储库时,Git会自动创建远程跟踪分支,这些分支执行您为主分支描述的内容.您可以列出这些远程跟踪分支:
git branch -r
由于已经为您完成了对上游存储库的跟踪,因此通常会使用主分支对项目进行主线更改.这是我在你的特殊情况下会做的事情:
将myfix分支合并到克隆中的master中.(在"主题分支"中完成此操作是一种很好的做法.)
将主分支推送到Github.(目前还不清楚你是分叉原始存储库,还是只是克隆它.你需要分叉原始存储库,创建自己的副本,以便下一步工作.)
将Github pull请求发送给您分叉的存储库的所有者.
Github允许您向其他存储库的所有者发送拉取请求,并且请求说明在哪里可以找到有趣的更改.这意味着您不必将所有更改保留在特定的已知分支中.
在另一个人身上轻松实现将增加你的补丁被接受的机会,所以保持一个干净的主人作为一个共同的参考点,并在主人的分支机构之间进行更改.保持你的分支狭窄焦点:而不是在一个分支中堆积113个新功能,将它们分开,以便干净利落地完成.