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

Ton*_*yGW 7 git branch

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

local_branch1
local_branch2
local_branch3
local_branch4
Run Code Online (Sandbox Code Playgroud)

local_branch3从主服务器中删除后,我希望它保持本地分支(仅从主服务器中删除).

我在这个类似的问题上检查了Steve Harman的博客,但这似乎也永远删除了本地分支.

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

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

原因是我想master在调整时保持分支可交付local_branch3.

shi*_*kia 10

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

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

git checkout master
git revert -m 1 <<SHA1 value>>
Run Code Online (Sandbox Code Playgroud)

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


jth*_*ill 5

如果我读对了问题,shirakia 的答案(恢复合并提交的更改)是正确的,它可以像宣传的那样工作,OP 应该使用它。

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

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

如果 local3 上的进一步开发使整个事物再次可合并(您还原还原,您自己将更改放回去),这是一个众所周知的讨论,如何重新应用更改

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