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

dki*_*zer 6 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

Von*_*onC 5

请注意,与自动提交的git合并不会调用pre-commit钩子.请参阅" git merge自动提交不会触发预提交挂钩 "

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

修补程序正在进行中.


Cas*_*bel 4

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

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

因此,如果您确实愿意,可以编写一个预提交挂钩,它检查当前分支和您尝试合并的分支,如果是您不想要的分支,则以非零状态退出。在我的脑海中,我能想到的检查您尝试合并哪个分支的唯一方法是检查文件.git/MERGE_MSG并解析第一行。(另一种方法.git/MERGE_HEAD是告诉您要合并的 SHA1,但没有记录它是什么分支,因此如果两个分支位于同一个位置,那么您就不走运了。

预提交钩子显然不是为了快进合并而运行的;我怀疑是否真的有任何方法可以防止这种情况发生。但想必如果您阻止分支合并,就永远不会进行快进尝试。