我希望能够在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
我需要确保主分支和其他分支之间偶然合并的可能性很小。
所以我正在寻找一种方法来介入与主分支合并之间的问题,“这个合并将在网站上发布,你确定要做吗?”只有在我确认合并后才能通过。
我想这种情况只与网站开发人员有关,他们的代码不需要编译才能运行,并且可能会在实时安装中提取稳定网站的副本。
答案 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,但没有记录它是什么分支,所以如果两个分支在同一个地方,那你就不走运了。
预提交挂钩显然不会为快进合并运行;我怀疑是否有任何方法可以防止这种情况发生。但大概如果你让分支机构不合并,就不会有快速的尝试。