代码之家  ›  专栏  ›  技术社区  ›  dkinzer

在git中有没有办法防止两个分支合并

  •  6
  • dkinzer  · 技术社区  · 15 年前

    我希望能够在git repo中保留两个独立的分支,即使这些分支可能包含相似的内容,也不能意外合并。

    在git中强制分支保持分离有什么诀窍吗?假设我有分部 一个 和分支 git merge B //assuming A is checked out 会失败的。

    这里出现的问题是,在创建一个我正在开发的网站的存储库时,我需要 主人 分支机构要始终是目前状态稳定的网站。

    我需要在 发展 话题 必要时分支。

     C1-C2                        master
         \
         C3-C4-C5-C6-C9-C10-C11   development
                   \
                    C7-C8-C12     topic/HEAD
    

    我需要确保主分支和其他分支之间很少有偶然合并的机会。

    因此,我正在寻找一种方法,在与主分支的合并之间“插入”一步,以询问“此合并将在网站上生效,是否确实要执行此操作?”只有在我确认合并后才能通过。

    我想这个场景只与那些代码不需要编译就可以运行的web开发人员相关,并且可以在实时安装中获取稳定网站的副本。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Cascabel    15 年前

    我相信你唯一能做到的就是 pre-commit hook

    这个钩子由git commit调用,可以使用--no-verify选项绕过它。它不接受任何参数,并在获取建议的提交日志消息和进行提交之前被调用。从该脚本以非零状态退出会导致git提交中止。

    因此,如果您真的想这样做,可以编写一个预提交挂钩,它检查当前分支和您试图合并的分支,如果您不想合并的分支,则以非零状态退出。在我的脑海中,我唯一能想到的检查你试图合并的分支的方法就是检查文件 .git/MERGE_MSG 分析第一行。(另一种选择, .git/MERGE_HEAD

    预提交钩子显然不适用于快进合并;我怀疑真的有什么方法可以防止这种情况发生。但如果不合并分支,就不会有快速前进的尝试。

        2
  •  5
  •   VonC    13 年前

    注意,带有自动提交的git合并将 pre-commit 钩子。见“ git merge auto-commit doesn't fire pre-commit hook "

    合并调用 commit_tree 直接,因此绕过了标准提交挂钩。

    A Patch