【问题标题】:How can I remove merged branch which is already push to origin如何删除已经推送到原点的合并分支
【发布时间】:2015-07-27 11:24:20
【问题描述】:

例如,我有 1 个缺陷问题,开发人员创建了新分支,并在分支名称“fix_#1_backyard_data_displayed”中修复了它。然后,我将它合并到分支“beta”中进行测试。过了一会儿,另一位测试人员将“fix_2”和“fix_3”等其他分支合并到“fix_20”中,合并为“beta”并对其进行测试。在那之后,我发现我的第一个合并的“fix_#1_backyard_data_displayed”分支有问题,使我们的应用程序不稳定。

现在,如何在不干扰“fix_2”和“fix_3”到“fix_20”的情况下删除已经推送到原点的合并分支?

【问题讨论】:

  • 你说“删除合并的分支”是什么意思?从远程删除它,或者恢复你在这个分支中所做的提交?
  • 很抱歉造成误解,我在这里找到了解决方案:# branch="fix1"; git log --all --pretty=format:"%H %s" | grep -i "合并分支'$branch'" | grep -v "还原" | awk '{打印 $1}' | xargs git revert -m 1

标签: git merge gitlab


【解决方案1】:

简答

beta 分支中:

  1. 找到与合并对应的提交的 SHA1。
  2. 运行git revert <sha1> -m 1

有一个警告:Git 仍会认为此功能分支已合并到 beta 分支中,并且要再次合并此分支,您需要在合并之前恢复(再次)此 git revert 引入的提交.

加长版

Git 中撤消提交的命令是revert。对于合并提交,您需要使用 -m 开关指定“主线”分支。在您的情况下,它可能应该是 1:

通常您无法还原合并,因为您不知道应该将合并的哪一侧视为 主线。此选项指定主线的父编号(从 1 开始)并允许还原为 反转相对于指定父级的更改。

还原合并提交声明您将永远不希望合并带来的树更改。作为一个 结果,以后的合并将只引入由非祖先的提交引入的树更改 先前还原的合并。这可能是也可能不是您想要的。

有关详细信息,请参阅 revert-a-faulty-merge How-To[1]。

(来源:git help revert

以下sh 脚本演示了这一点。第一个revert 命令恢复合并fix1 分支的提交,在这种情况下,它是倒数第二个提交,即HEAD^。还原后,在再次合并fix1 分支之前,需要使用另一个revert 命令撤消还原:

#!/bin/sh

git init test
cd test

touch a
git add a
git commit -m a

git checkout -b fix1
touch b
git add b
git commit -m b

git checkout -b fix2 master
touch c
git add c
git commit -m c

git checkout master
git merge --no-ff --no-edit fix1
git merge --no-ff --no-edit fix2

git revert --no-edit HEAD^ -m 1

git checkout fix1
echo "fix b" > b
git add b
git commit -m bb

git checkout master
# git merge fix1 # this will give an error!

# revert changes introduced by revert before merging
git revert --no-edit HEAD
git merge --no-ff --no-edit fix1

【讨论】:

    【解决方案2】:

    我在这里找到了解决方案:

    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
    

    【讨论】:

      猜你喜欢
      • 2018-03-29
      • 2016-12-09
      • 1970-01-01
      • 2011-09-01
      • 2022-11-16
      相关资源
      最近更新 更多