2017-08-28 66 views
0

我有一個主人和一個開發分支。功能和修補程序分支被合併到開發中,並且從不時開發合併到主開發中。現在我有一個請求從主分支中排除特定的修補程序。這可能以某種方式嗎?這是一個相對老的修補程序分支,所以從那時起我有超過30個合併到開發中。或者我應該創建一個新的分支,手動還原這些更改並將其合併到主控中?如何從Git中的主分支中排除特定的合併分支的提交?

+0

如果你可以接受回覆場景,那麼一定要這樣做。擺脫原來的提交,就好像它從未發生過一樣是可行的,但與簡單地還原修補程序引入的更改相比,它會有更多的工作。就我個人而言,我會嘗試檢查修補程序分支(或者如果您已刪除分支的最後一次提交),恢復它,然後將該新提交合併到開發和主控程序中。 –

+0

這是一個奇怪的要求。如果你想永久地恢復它(對於一個用戶來說不是一次性事情),那麼肯定只是做一個新的提交手動恢復更​​改。如果包含在幾個文件中,而不是從修補程序之前對這些文件進行簡單差異檢查/檢出,可能就足夠了。我想盡管你應該詳細說明爲什麼你甚至會接受這個請求。也許答案在別處。 – kabanus

回答

1

你只需要恢復舊hotfix合併到develop分支的提交。

假設如下圖所示,您要在master分支上排除的舊修補程序是從承諾F提交到承諾G的承諾。

A---B------------------I---…  master 
    \    /
     C---D---E--…--H---…   develop 
      \  / \ 
      F--…--G  J--… hotfix/feature 

您使用以下方式使用排除老hotfixmaster分支:

首先,找到合併提交舊hotfix合併爲develop分支。由於開發分支合併提交H

然後恢復你的master分支的變化:

git checkout master 
git revert -m 1 <commit id for H> 

注:如果有衝突,恢復合併更改時,您可以修改並保存衝突的文件,你git add .git revert --continue完成回覆。

相關問題