2017-10-18 71 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

相關問題