Git - 从Master中断掉一段代码并使其成为分支

时间:2014-01-08 03:05:45

标签: git

我有一个项目,我已经工作了很长一段时间,但从未发布过。我有一个我开始工作的功能(多人支持)然后我意识到我不想包含在1.0版本中。

我最近开始使用git控制我的源代码。我将整个源代码作为“初始版本提交”提交给master。

我正在使用受欢迎的每个新功能分支结构。

我想从“master”中删除多人游戏代码并将其放入名为“multiplayer”的分支中。这样我就可以进行v1.0所需的其他更改,在没有任何多人游戏代码的情况下发布v1.0,然后在发布v1.0之后,我可以重新设置我的多人游戏分支,开始处理它,并拥有它包含在v2.0中。

这是一个奇怪的问题,因为问题的出现是因为我开始使用git来控制项目的中途。我没有在网上看到任何建议解决这个问题的方法。

我有一个解决方案,但似乎很糟糕。我将在下面发布它作为答案,但不接受它。希望有人能够提供更好的答案。谢谢。

3 个答案:

答案 0 :(得分:4)

  1. git checkout master
  2. git checkout -b multiplayer(这将根据您的主人为您的功能创建一个名为多人游戏的分支)
  3. 几种可能性:
    • 如果你有这个功能的明确提交,你可以还原它们: git 还原_your_hash _
    • 如果您对此功能有明确的提交,则可以将其删除 通过变基的历史,你将不得不推动力量: git rebase HEAD~x -i x是你想要检查的提交数量, 你可以删除一行来删除它,-i是交互式的。
    • 您应该执行清理提交并删除主服务器上的代码。

答案 1 :(得分:2)

我提出的解决方案,但不喜欢:

  1. 将所有相关的源文件(即任何引用多人游戏的文件)保存在其他位置。
  2. 在我的主分支上,浏览我的所有源文件并删除所有多人游戏代码。
  3. 在主分支上提交此消息,并将“将未完成的多人游戏代码分解为单独的分支”
  4. 创建并切换到名为multiplayer的新功能分支
  5. 复制我在步骤1中保存的源文件。
  6. 将“更改”提交给多人游戏分支。
  7. 我认为这会有效,但我觉得这可能是一种更简单的方法。也许不是,因为问题的性质有点奇怪。

答案 2 :(得分:2)

差不多,但您不需要在其他地方复制代码的步骤。

  • 来自大师git branch multiplayer你现在有一个单独的分支,其中包含所有代码,但你仍然掌握着。
  • 删除您不想要的代码
  • 提交。
  • 在你想要的时候,不要掌握多人游戏。