You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写Bash脚本检查Git近2日提交时的逻辑错误排查

问题分析与修正:Bash脚本Git提交检查逻辑错误

核心错误点

  • 逻辑判断完全倒置:[[ -n "..." ]]用于判断命令输出非空,当最近有提交时,git log会输出修改的文件名,此时条件为真,但你却输出了“No Commits last 2 days”,和实际逻辑完全相反。
  • 时间参数不匹配:脚本里写的是--since="200 days ago",但提示文本是“last 2 days”,参数和需求不符。
  • 冗余的文件名判断:你只需检查是否存在提交,没必要输出并去重文件名,直接判断git log是否有输出更简洁可靠。
  • 重复克隆仓库:每次运行脚本都会执行git clone,如果目标目录已存在会报错,完全没必要重复克隆。

修正后的脚本

MY_PATH="C:/test"
REPO_DIR="$MY_PATH/docker-react"
REPO_URL="https://github.com/test-repo/docker-react.git"

# 检查仓库是否已存在,不存在再克隆
if [[ ! -d "$REPO_DIR" ]]; then
    mkdir -p "$MY_PATH"
    git clone "$REPO_URL" "$REPO_DIR"
fi

cd "$REPO_DIR"
git checkout master
git pull  # 拉取最新代码,避免基于本地旧版本判断

# 检查最近2天是否有提交
if git log --since="2 days ago" --pretty=format:"%h" | grep -q .; then
    echo "Commits available in the last 2 days"
else
    echo "No commits in the last 2 days"
fi

修正说明

  1. 先判断仓库目录是否存在,避免重复克隆报错。
  2. 加入git pull确保本地代码是最新状态,避免基于旧仓库的提交记录判断出错。
  3. 用git log --since="2 days ago" --pretty=format:"%h"仅输出提交哈希,配合grep -q .静默检查是否有输出(只要有提交就返回真)。
  4. 逻辑判断与输出文本完全匹配:有提交时提示存在提交,无提交时提示无提交。

内容的提问来源于stack exchange,提问作者Ashwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:10:30