13

所以我在 github 上克隆了一个项目并修复了一个补丁。因为这是我第一次在 git 中工作,所以我试图找出将它放到网上的最佳方法。

在 github 上查看我自己的(克隆的)存储库后,只有一个分支:master。我创建了一个分支,myfix,它现在包含一个提交,这是该错误的修复。

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

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

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

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

Git 可以做上述的任何组合(或全部)。这让我对如何轻松向他人展示我的作品感到有些困惑。有这样的“通用”工作流程吗?还是每个人都为自己而在问题跟踪器中的特定分支(已推送)中发布特定修订以修复错误?

4

2 回答 2

7

当您克隆存储库时,Git 会自动创建远程跟踪分支,这些分支执行您为主分支描述的操作。您可以列出这些远程跟踪分支:

git branch -r

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

  • 将myfix分支合并到克隆中的master中。(在“主题分支”中完成此操作是一种很好的做法。)
  • master分支推送到 Github。(不清楚您是分叉了原始存储库,还是只是从它克隆。您需要分叉原始存储库,创建自己的副本,以便下一步工作。)
  • 向您分叉的存储库的所有者发送 Github拉取请求。
于 2009-12-08T22:20:46.000 回答
5

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

让其他人容易上手会增加你的补丁被接受的机会,所以保持一个干净的 master 作为公共参考点,并在 master 的分支中进行更改。保持你的分支专注于狭窄:与其在一个分支中堆积 113 个新功能,不如将它们分开,以便你可以干净地做到这一点。

于 2009-12-08T22:12:41.303 回答