使用Github在Git中提交多个拉取请求(常规流程)

时间:2011-09-23 02:08:08

标签: git github workflow fork

我无论如何都不是git专家,所以我想确保以下流程是好的:

  1. 找一个我想贡献的回购。 (原始回购)
  2. 在github上分享原始回购(我的叉子)
  3. 在我正在处理的任何项目之外克隆 my fork 到我的机器。 (孤立克隆)
  4. my fork 包含在我想要使用的项目的子模块中。(子模块克隆)
  5. 隔离克隆上创建一个功能分支,并添加一些内容。
  6. 创建另一个功能分支和其他不相关的内容。
  7. 原始回购添加为我的隔离克隆的遥控器。
  8. 重新启动原始回购
  9. 将两个功能分支推入并拉入隔离克隆的主服务器。
  10. 从我项目中的子模块克隆中拉出来。
  11. 将拉取请求提交至隔离克隆中每个功能分支的原始仓库
  12. 接受拉请求。
  13. 重新我的fork 的主分支,以反映我的更改的新主人。
  14. 那里有什么错误吗?

    然后,我应该如何处理本地计算机上的功能分支?或许将它们重新定位给我当地的大师?删除它们(是不是很糟糕?)?

    如果他们不接受我的请求,我仍然希望将它们合并到我的本地主人。这会搞砸吗?

    我正在尝试找出允许我提交基于功能的请求的流程,但也会在我的项目中使用我的更改而不管他们的接受程度,以及我们的本地副本在他们接受/拒绝后直接使用。< / p>

    很多阅读,但感谢您的帮助!

    编辑:一天后发现这篇相关文章。不回答我的问题的复杂性,但仍然有用:http://codeigniter.com/news/contribution_guide#When:13:36:15Z

1 个答案:

答案 0 :(得分:3)

子模块部分使事情变得复杂,但是否则:

  • 9:拉?你会把你的两个功能分支推到你的分叉(“孤立的克隆”),而不是拉它们。这将保存远程仓库上的提交。
    实际上,对于pull请求,您应该推送一个分支,其中包含您要提议的所有提交。见下一点。
  • 11:提交拉取请求:拉取请求背后的想法是建议快进合并以包含原始项目。
    因此,当您需要重新设置要包含在分支顶部的pull请求中的提交(例如master)时,原始repo必须使用您的提交进行更新。为此,建议:
    • 首先从原始仓库拉出(以确保master是最新的),
    • 将您的功能分支在master之上(再次master这里是一个示例)作为一个新分支(并测试最初在他们自己的分支中开发的两个新功能是否一起工作)
    • 将新分支推送到您的分支
    • 建议将新分支的提交作为master
    • 的拉取请求

commented作为koffie,如果您是唯一一个在该功能分支上工作的人,则可以使用rebase(然后可以push --force。)

如果您想回馈项目,则不应直接修改您将参与的分支的提交历史记录:如果您要向原始仓库的master发出拉取请求,你不应该向你的叉子的master推送任何东西(除了来自原始仓库的拉动提交) 你应该总是在专门的分支机构工作。