从主分支中删除单个合并分支

时间:2014-12-04 14:00:53

标签: git branch

在我的主分支中,有以下已合并的本地分支,但我想从master中删除local_branch3

local_branch1
local_branch2
local_branch3
local_branch4

从master中删除local_branch3后,我希望它保留为本地分支(仅从master中删除)。

我在这个类似的问题上检查Steve Harman's blog,但这似乎也永远删除了本地分支。

修改以澄清我的意思,正如我在以下评论中发表的那样:

  

我希望master分支撤消local_branch3合并产生的更改,同时保持local_branch3不变。

原因是我想在master调整时保持local_branch3分支的可交付成果。

2 个答案:

答案 0 :(得分:9)

也许你的意思是从master恢复local_branch3?

如果是这样,首先检查合并local_branch3的提交的SHA1值。 并且

git checkout master
git revert -m 1 <<SHA1 value>>

然后在master分支中没有local_branch3代码。并且locah_branch3将保留。

答案 1 :(得分:3)

如果我正确地阅读了这个问题,那么shirakia的答案(恢复合并提交的更改)是正确的,它的工作方式与广告一样,OP应该使用它。

但值得指出的是,如果对local3的进一步工作使整个有效,并且您自然希望重新应用原始工作以及后来的更正,会发生什么。

该合并的local3提交现在是合并提交历史的一部分。因为来自local3的任何进一步合并的基本内容位于新的合并基础上,所有该历史记录都被有效地标记为(实际上,它已经)已经正确应用:任何后来的合并只会看到自那时以来所做的更改。恢复并没有撤消该部分(事实上,这是恢复的全部内容,不删除该提交)。

Here's a well-known discussion of how to reapply the changes if further development on local3 makes the whole thing mergeable again (you revert the revert, you put the changes back yourself)

另一个可能更简单的方法是,撤消任何您不希望从历史记录中删除的提交的正确方法是还原它。这包括任何后来撤销回归的决定。