2012-01-09 87 views
1

說我創建了一個feature-x分支並與master分支合併或重新分區。現在將來有可能通過git刪除通過feature-x分支添加的所有更改嗎?如何從歷史檔案副本中的主分支中撤銷合併或重新分支的分支

這是一個常見的功能,我們在有限的時間內添加一些更新並將其刪除。如果可能的話,有人可以幫忙。

在此先感謝。

我會更清楚一些例子。假設我在feature-x分支中添加了一個輪詢腳本,並使用作爲生產分支的主分支對其進行重新綁定。我可能只用1個月的時間才能使用投票腳本。在我之間做了幾次承諾,重新設計了新的分支和主分支。現在1個月後,我想從主分支中完全刪除該輪詢腳本,但保留主分支中的所有新更改(新提交)。

回答

1
man git-revert 

git revert將重播相反的提交。

+0

感謝您的回覆......但git revert將撤消我所做的所有近期提交 – user434509 2012-01-09 16:10:15

+0

@ user434509:它不會 - 'git revert f00'創建一個新的提交,它只是反轉提交'foo'引入的更改。 – 2012-01-09 16:36:59

+0

很棒......它的工作。謝謝。 – user434509 2012-01-09 17:51:40

1

那麼你可以使用git revert來撤銷提交。這將創建一個新的提交,它基本上解除了舊提交的更改。或者您可以使用git rebase從歷史記錄中刪除提交。但是不應該在共享存儲庫來完成,因爲它會改寫歷史,所以如果有人改寫之前檢查出來,現在拉他/她很可能會得到可怕的合併衝突

+0

感謝您的回覆......但git恢復將撤消我所做的所有最近的提交 – user434509 2012-01-09 16:10:23

+0

@ user434509:不,你可以告訴git恢復哪些提交恢復(並且只有那些) – Grizzly 2012-01-09 17:44:52

0

有沒有可能給,而不是合併/衍合特性分支變成高手,只是使用功能分支作爲你的產品代碼,合併掌握到它的必要嗎?然後,當你完成你的功能分支時,回到使用master作爲生產代碼。

如果我理解正確git rebase,它不存儲有關的兩個分支的共同祖先的任何信息,所以這將是困難的,兩人再次分開。我不能評論使用git revert來撤消合併提交,只能說它聽起來不錯。

+0

是的,這是一個選項...但在這裏我必須再次更改代碼...然後從主分支中提取更改,然後再次與主設備重新綁定。我正在尋找一些我不需要再次觸摸代碼並通過git進行必要更改的內容。 – user434509 2012-01-09 16:09:22

0

對於一個工作流程,使您在做什麼,開箱即用,在這裏看到:

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

候選發佈版的建設,使狠使用rerere將幫助您得到這個打算。

它很容易爲你現在創建一個新的分支和重做你之前做了合併,省去不必要的一個。你可能需要重新配置其中的一些。現在「拯救」主分支看起來太費勁了。

相關問題