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

时间:2010-10-30 22:57:42

标签: git merge branch git-merge

我希望能够在git仓库中保留两个独立的分支,即使分支可能包含类似的内容,也不会意外地合并。

是否有强制分支在git中保持独立的技巧?假设我有分支 A 和分支 B git merge B //assuming A is checked out之类的东西会失败。

这里引起关注的是因为在创建我正在开发的网站的存储库时,我需要分支的 HEAD 始终是稳定的当前状态网站。

如果需要,我需要在开发分支上进行任何开发提交,开发分支的主题分支。

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

我需要确保主分支和其他分支之间偶然合并的可能性很小。

所以我正在寻找一种方法来介入与主分支合并之间的问题,“这个合并将在网站上发布,你确定要做吗?”只有在我确认合并后才能通过。

我想这种情况只与网站开发人员有关,他们的代码不需要编译才能运行,并且可能会在实时安装中提取稳定网站的副本。

2 个答案:

答案 0 :(得分:5)

请注意,与自动提交的git合并将调用pre-commit挂钩。请参阅“git merge auto-commit doesn't fire pre-commit hook

  

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

A Patch正在进行中。

答案 1 :(得分:4)

我相信你能做到这一点的唯一方法是使用pre-commit hook。从联机帮助页:

  

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

所以,如果你真的想,你可以编写一个预提交钩子来检查当前分支和你试图合并的分支,如果它是你不想要的那个对,则以非零状态退出。在我的脑海中,我能想到检查你试图合并的分支的唯一方法是检查文件.git/MERGE_MSG并解析第一行。 (替代方法,.git/MERGE_HEAD会告诉你你正在合并的SHA1,但没有记录它是什么分支,所以如果两个分支在同一个地方,那你就不走运了。

预提交挂钩显然不会为快进合并运行;我怀疑是否有任何方法可以防止这种情况发生。但大概如果你让分支机构不合并,就不会有快速的尝试。