GitHub,Git,如何向上游存储库提交更改

11

我们团队内部已经使用Git相当长的一段时间,并且在团队内部拥有一个比较好的工作流程。昨天,我们想向GitHub上的一个项目提交一些错误修复请求,这对我们来说是新事物。所以,这就是我们所做的:

  1. 克隆他们的存储库
  2. 派生上游
  3. 将我们的派生版本添加为远程
  4. 在主分支中修复了一些错误
  5. 将主分支推送到我们的远程派生版本中
  6. 发送拉取请求
  7. 他们拉取了更改
  8. git fetch origin
  9. 在主分支上:git merge origin/master

这样做正确吗?我们最终获得了额外的“Merge commit 'origin/master'”消息,其他开发人员似乎没有遇到这个问题。此外,在日志中,我们可以看到我们的提交重复了。

一切似乎都很正常,但感觉不太对劲。有好的GitHub工作流程页面吗?Git帮助页面似乎缺少如何进行本地更改的部分。

我认为,如果我们在将更改推送到派生版本之后回滚我们的主分支,我们就不会有这个问题,但这也不太对。

1个回答

8

这是一种方式。
我更喜欢克隆我的GitHub存储库(即GitHub项目“theirRepo”的分支),而不是直接克隆现有的“theirRepo”。

我建议您在“theirRepo”的基础上重新设置您的主分支,而不是合并它。
我相信这样可以避免在日志中看到您的提交两次,并避免额外的“合并”提交消息。

  1. 在myRepo中fork theirRepo
  2. 克隆myRepo
  3. 将“theirRepo”添加为远程连接
  4. 修复master分支中的一些错误
  5. 将master推送到我们的远程分支“myRepo”
  6. 发送拉取请求
  7. 他们拉取了更改内容
  8. git fetch theirRepo
  9. 在master分支上:git rebase theirRepo/master

此外,还有许多类似的策略,在这个SO问题中进行了讨论(针对另一个情况,但这可以给您一些想法):如何在github.com上分支项目后,重新播放本地git存储库的提交?


感谢您的帮助,非常感激。如果我在获取(fetch)之后进行变基(rebase),那么这将撤销我的提交(commit),应用他们的提交(commit)(现在包括我从拉取(pull)中的提交(commit)),并将我的提交(commit)重新放回顶部,对吗?Git是否认识到这些提交(commit)是相同的,还是我理解错了什么? - tsdbrown
@tsdbrown Git 应该能够检测到相似的提交记录(相同的 SHA1)。 - VonC
太棒了,我希望情况是这样的。下次我会尝试一下。 - tsdbrown
@tsdbrown:不要犹豫,发表一篇回答,反映这个解决方案对你的作用;) - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接