在我的主分支中,有以下已合并的本地分支,但我想从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
分支的可交付成果。
答案 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的任何进一步合并的基本内容位于新的合并基础上,所有该历史记录都被有效地标记为(实际上,它已经)已经正确应用:任何后来的合并只会看到自那时以来所做的更改。恢复并没有撤消该部分(事实上,这是恢复的全部内容,不删除该提交)。
另一个可能更简单的方法是,撤消任何您不希望从历史记录中删除的提交的正确方法是还原它。这包括任何后来撤销回归的决定。