如果在git中使用钩子有未解决的冲突,如何防止推送?

Ven*_*nus 3 git hook

我想预接收挂钩可能会有所帮助.
我认为

#!/bin/sh
read old_sha1 new_sha1 refname
git diff $old_sha1..$new_sha1 may 
Run Code Online (Sandbox Code Playgroud)

帮助找出冲突标记.
但如何使用正则表达式或其他来判断此提交中是否存在未解决的冲突?冲突如下:

<<<<<<< HEAD
Conflict resolution is hard;
let's go shopping.
=======
Git makes conflict resolution easy.
>>>>>>> d7785deagea4342532g2q632y321632g23h23
Run Code Online (Sandbox Code Playgroud)

Amb*_*ber 9

#!/bin/bash
read old_sha new_sha refname
if git diff "$old_sha" "$new_sha" | grep -qE '^[+]?(<<<<<|>>>>>)'; then
    echo "Saw a conflict marker in $(basename "$refname")."
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

  • @DanielBaulig因为每次推送都会调用一次"pre-receive",而不是每次调用一次.可以同时推送一系列提交,在这种情况下,使用`show`只会获得最后一次提交的差异,而不是所有推送的提交. (2认同)