2014-01-08 30 views
3

我有一個項目,我一直在努力了很長一段時間,但從未發佈。我有一個功能,我開始工作(多人支持),然後我意識到我不想包含在1.0版本。Git - 打斷Master的一段代碼並使其成爲分支

我最近開始用git控制我的源代碼。我將我的整個源代碼作爲「初始版本提交」提交給master。

我正在使用流行的分支爲每個新功能結構。

我想從「master」中刪除多人遊戲代碼並將其放入名爲「multiplayer」的分支中。通過這種方式,我可以在沒有任何多人遊戲代碼的情況下完成v1.0所需的其他更改,v1.0版本,然後在v1.0發佈後,我可以重新分配我的多人遊戲分支,開始處理它,並擁有它包含在v2.0中。

這是一個奇怪的問題,因爲問題的出現是因爲我開始使用git來版本控制項目的一半。我沒有看到網絡上的任何東西提出解決這個問題的方法。

我有一個解決方案,但它似乎不好。我會在下面作爲回答發佈,但不接受它。希望有人能夠提供更好的答案。謝謝。

回答

4
  1. git checkout master
  2. git checkout -b multiplayer(這將創建一個分支,叫多人,根據您掌握您的特性)
  3. 幾種可能性:
    • 如果你有這個功能的明確提交你可以恢復他們:git 恢復_your_hash_
    • 如果你有明確提交此功能你可以n將它們從 中刪除,通過重新綁定的歷史記錄,您將不得不推後:git rebase HEAD〜x -i x是您想要檢查的提交次數, 您可以刪除一行以將其刪除, -i是互動的。
    • 你應該做一個清理提交併刪除你的代碼在主。
2

的解決方案,我想出了,但不喜歡:所有相關的源文件

  1. 保存(即任何引用多人),在其他地方。
  2. 在我的主分支上,瀏覽我的所有源文件並刪除所有多人遊戲代碼。
  3. 提交本上主分支與「折斷未完成多人碼成單獨的分支」的消息
  4. 創建並切換到名爲多人一個新的功能分支
  5. 複印在我保存的在步驟1中的源文件。
  6. 將「更改」提交給多人遊戲分支。

我認爲這可行,但我覺得有可能是一個更簡單的方法來做到這一點。也許不會,因爲問題的本質有點奇怪。

2

差不多,但你不需要在其他地方複製代碼的步驟。

  • from master git branch multiplayer你現在有一個單獨的分支,其中包含所有的代碼,但你仍然是主人。
  • 刪除你不想要的代碼
  • 提交。
  • rebase多人無法掌握你想要的。
相關問題