如何获取Git命令返回字符串,实现拉取后条件推送?
Git pre-push钩子:仅拉取已过时才允许推送
你可以直接在pre-push脚本里捕获git pull的输出,通过字符串匹配来判断是否允许推送。以下是具体实现:
步骤1:编写pre-push脚本
在仓库的.git/hooks/目录下创建(或编辑)pre-push文件,写入以下内容:
#!/bin/bash # 执行git pull并捕获输出结果 pull_result=$(git pull) # 定义需要匹配的目标字符串 target_str="Already up to date." # 判断拉取结果是否包含目标字符串 if [[ "$pull_result" == *"$target_str"* ]]; then # 匹配成功,允许执行推送 exit 0 else # 匹配失败,终止推送并给出提示 echo "拉取结果不符合要求,终止推送。请先处理代码冲突或同步远程更新。" exit 1 fi
步骤2:赋予脚本执行权限
执行以下命令让脚本具备可运行权限:
chmod +x .git/hooks/pre-push
逻辑说明
git pull的输出会被完整捕获到pull_result变量中- 使用
[[ "$pull_result" == *"$target_str"* ]]做模糊匹配,只要输出里包含目标字符串就允许推送 - 脚本返回
exit 0时Git会继续执行推送操作,返回exit 1则直接终止推送
内容的提问来源于stack exchange,提问作者nutka
相关产品推荐
相关产品推荐

