【问题标题】:Remove a single merged branch from master branch从主分支中删除单个合并分支
【发布时间】:2014-12-04 14:00:52
【问题描述】:

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

local_branch1
local_branch2
local_branch3
local_branch4

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

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

编辑:澄清我的意思,正如我在以下 cmets 中发布的那样:

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

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

【问题讨论】:

标签: git branch


【解决方案1】:

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

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

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

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

【讨论】:

  • 是的,这正是我的意思。我希望 master 分支撤消由 local_branch3 合并引起的更改,同时保持 local_branch3 不变。
  • 但请注意@jthill 在下面写的内容 - 将您的 local_branch3 合并回 master 可能并不那么简单。
【解决方案2】:

如果我没看错问题,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)。

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

【讨论】:

    猜你喜欢
    • 2014-10-02
    • 2012-02-24
    • 2020-10-18
    • 1970-01-01
    • 2021-10-24
    • 2011-01-13
    • 1970-01-01
    • 2014-04-30
    • 2015-06-23
    相关资源
    最近更新 更多