2017-10-18 70 views
1

我有一堆线性提交历史提交。在某些时候,我添加了一个对测试有用的功能,但不应该投入生产。我现在想分出一个具有该功能的testing分支,但希望将来能够将testing重新分配到master以使其保持最新状态。所以,我目前提交的样子:Git删除功能,但保留其他分支

A-B-C-D-E 

我的解决办法是增加另一个承诺Fmaster,消除该功能。然后创建一个分支testing并恢复提交F

# Do work to remove feature 
git commit -a -m "F" 

git checkout -b testing 
git revert master 

所以现在我的提交历史类似:

A-B-C-D-E-F (master) 
      \ 
      F' (testing) 

F'F逆转。

这是最好的方法吗?有没有更容易,我失踪?

回答

1

我不确定我的做法更容易,但我更喜欢它留下我的历史的方式。

您可以对reorder the commits执行交互式重定位,将测试提交到最前面。

然后,您可以从您的主站创建一个新的测试分支,该分支现在已将该提交放在顶部。

然后,您可以重新绑定您的主设备或只是重置指针,从主分支上删除顶层提交。

+0

OP会仍然能够通过这种技术将'testing'变成'master'吗? – bfontaine

+0

是的,因为在这个测试结束时,所有'testing'都是'master'加上堆栈顶部的一个提交。 – dillius

+0

不幸的是,所讨论的功能是多次提交的产品,这些提交在历史中并非彼此相邻。这个解决方案也会与其他代码签出并希望重新合并的其他人混淆。如果您不关心其中的任何一项 - upvoted,那么这个解决方案也很好。 – Alex

相关问题