例如,我有1个缺陷问题,开发人员创建新分支,并将其修改为分支名称“fix_#1_backyard_data_displayed”。然后,我将它合并到分支“beta”中进行测试。过了一会儿,另一个测试人员将“fix_2”和“fix_3”之类的另一个分支合并到“fix_20”中并测试它。在那之后,我发现我的第一个合并的“fix_#1_backyard_data_displayed”分支是错误的并且使我们的应用程序不稳定。
现在,如何在不干扰“fix_2”和“fix_3”到“fix_20”的情况下删除已经推送到原点的合并分支?
答案 0 :(得分:1)
在beta
分支中:
git revert <sha1> -m 1
有一点需要注意:Git仍然会认为此功能分支已合并到beta
分支中,并且要再次合并此分支,您需要还原(再次)此引入的提交{合并前{1}}。
Git中撤消提交的命令是git revert
。对于合并提交,您需要指定&#34;主线&#34;使用revert
开关分支。在你的情况下,它应该是1:
通常您无法恢复合并,因为您不知道合并的哪一侧应该被视为 主线。此选项指定主线的父编号(从1开始)并允许恢复 反转相对于指定父级的更改。
恢复合并提交声明您永远不会希望合并带来的树更改。作为一个 结果,以后的合并只会带来由不是祖先的提交引入的树更改 以前还原合并。这可能是也可能不是你想要的。
有关详细信息,请参阅revert-a-faulty-merge-To-To [1]。
(来源:-m
)
以下git help revert
脚本演示了这一点。第一个sh
命令恢复合并revert
分支的提交,在这种情况下,它是倒数第二个提交,即fix1
。在还原之后,在再次合并HEAD^
分支之前,需要使用另一个fix1
命令撤消恢复:
revert
答案 1 :(得分:0)
我在这里找到了解决方案:
branch_to_revert="fix1"; git log --all --pretty=format:"%H %s" | grep -i "Merge branch '$branch_to_revert'" | grep -v "Revert" | awk '{print $1}' | xargs git revert -m 1