2010-02-04 59 views
10

我们已经在内部使用GIT很长时间了,并且在我们的团队中拥有相当不错的工作流程。昨天我们希望向Github上的项目提交一些错误修复。这对我们来说是新东西。所以,这就是我们所做的:GitHub,git,如何提交更改上游回购

  1. 克隆其回购
  2. 分叉上游
  3. 增加了我们的叉作为远程
  4. 修正了一些在主分支错误
  5. 推主对我们的远程叉
  6. 发送pull请求
  7. 他们拉到了变化
  8. 混帐取起源
  9. 在主:混帐合并origin/master的

这是做事的正确方法是什么?我们最终得到了一个额外的“Merge commit'origin/master'”消息,其他开发人员似乎没有得到。同样在日志中,我们可以看到我们提交了两次。

一切似乎都没问题,但它只是感觉不对。有没有人知道任何好的github工作流页面。 git帮助页面似乎错过了如何执行本地修改部分。

我想,如果我们在将更改推送到分支之后回滚了主分支,我们就不会遇到这个问题,但那也不是那么正确。

任何帮助将不胜感激!

回答

8

这是一种方式。
我更喜欢克隆我的 GitHub回购(一个分叉GitHub项目“theirRepo”),而不是直接克隆现有的“theirRepo”。

而且我会建议在“theirRepo”之上重新定位主分支,而不是合并。
我相信会避免在日志中看到你的提交两次,并会避免额外的“合并”提交消息。

  1. 叉theirRepo在myRepo
  2. 克隆myRepo
  3. 增加了 “theirRepo” 作为远程
  4. 固定在主分支
  5. 推主对我们的远程叉 “myRepo”
  6. 一些bug发送拉请求
  7. 他们拉动变化
  8. git fetch theirRepo
  9. 在主:git rebase theirRepo/master

又见讨论了各种类似的战略(为另一种情况,但可以给你一些想法)在此SO问题:How do I re-play my commits of a local git repo, on top of a project I forked on github.com?

+0

感谢您的帮助,真的很感激。如果我在取消后重新绑定,这将撤销我的提交,应用他们的提交(现在包括我的拉),并重新播放我的右上角? git是否承认提交的内容相同,或者我错过了这里的某些东西? – tsdbrown 2010-02-05 09:44:22

+0

@tsdbrown Git应该检测到类似的提交(相同的SHA1) – VonC 2010-02-05 10:08:23

+0

太棒了,我希望情况会如此。下次我会给这个。 – tsdbrown 2010-02-05 12:58:34