我想您可以使用pre-receive hook钩子来解决这个问题。
#!/bin/sh
read old_sha1 new_sha1 refname
git diff $old_sha1..$new_sha1 may
帮助查找冲突标记。
但如何使用正则表达式或其他方法判断此提交中是否存在未解决的冲突?
冲突的表示形式如下:
<<<<<<< HEAD
Conflict resolution is hard;
let's go shopping.
=======
Git makes conflict resolution easy.
>>>>>>> d7785deagea4342532g2q632y321632g23h23
$old_sha
和$new_sha
?为什么不直接使用git show $new_sha
?此外,您可能需要在正则表达式中使用行首标记^
。 - Daniel Bauligpre-receive
每次推送只会被调用一次,而不是每次提交都会被调用。一系列的提交可能会一次性被推送,这种情况下使用show
只能得到最后一个提交的差异,而不能得到所有已推送的提交的差异。 - Amber+
。谢谢! - Amber>>>>>
(因为?
应用于^+
正则表达式,它意味着^
重复 1 次或多次,基本上使得^
锚点是可选的)。正确的正则表达式是^\+?(<<<<<|>>>>>)
或^[+]?(<<<<<|>>>>>)
(这避免了在各种论坛中格式化此片段时可能被吞没的反斜杠)。 - mkm