Git-从Master上断开一段代码,使其成为分支

Git-从Master上断开一段代码,使其成为分支,git,Git,我有一个项目已经做了很长一段时间,但从未发布过。我有一个我开始使用的功能(多人游戏支持),然后我意识到我不想在版本1.0中包含它 我最近开始用git控制我的源代码。我在master上以“初始版本提交”的形式提交了我的全部源代码 我正在为每个流行的新特性结构使用分支 我想从“master”中删除多人游戏代码,并将其放入一个名为“multiplayer”的分支中。通过这种方式,我可以对v1.0进行所需的其余更改,在不使用任何多人游戏代码的情况下发布v1.0,然后在v1.0发布后,我可以重新设置我的多

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

我最近开始用git控制我的源代码。我在master上以“初始版本提交”的形式提交了我的全部源代码

我正在为每个流行的新特性结构使用分支

我想从“master”中删除多人游戏代码,并将其放入一个名为“multiplayer”的分支中。通过这种方式,我可以对v1.0进行所需的其余更改,在不使用任何多人游戏代码的情况下发布v1.0,然后在v1.0发布后,我可以重新设置我的多人游戏分支的基础,开始处理它,并将其包含在v2.0中

这是一个有点奇怪的问题,因为问题的出现是因为我在中途开始使用git对项目进行版本控制。我还没有在网上看到任何人提出解决这个问题的方法


我心里有个解决办法,但似乎很糟糕。我会把它贴在下面作为答案,但不会接受。希望有人能提供更好的答案。多谢各位

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

  • 将所有相关源文件(即任何引用多人游戏的文件)保存到其他地方
  • 在我的主分支上,检查我的所有源文件并删除所有多人游戏代码
  • 在主分支上提交此消息,消息为“将未完成的多人游戏代码断开为单独的分支”
  • 创建并切换到名为multiplayer的新功能分支
  • 在中复制我在步骤1中保存的源文件
  • 将“更改”提交给多人游戏分支
    我想这会管用的,但我觉得可能有更简单的方法。也许不是,因为问题的本质有点奇怪

    差不多,但您不需要将代码复制到其他地方

    • 从master
      git branch multiplayer
      中,您现在有一个单独的分支,其中包含所有代码,但您仍然在master上
    • 删除不需要的代码
    • 承诺
    • 当你想要的时候,重新设定多人游戏的基础
  • git签出主机
  • git checkout-b multiplayer
    (这将根据您的主机为您的功能创建一个称为multiplayer的分支)
  • 几乎没有可能:
    • 如果您对此功能有明确的提交,则可以将其还原:git 还原您的哈希值
    • 如果您对此功能有明确的提交,则可以从中删除它们 通过重新设定历史,你将不得不在:git之后用力推 rebase HEAD~x-ix是要检查的提交次数, 您可以删除一行来删除它,-i是交互式的
    • 您应该执行清理提交并删除主机上的代码