#!/bin/bash # 脚本用法:./git-commit-and-tag.sh "你的提交描述" "版本号" # 检查参数数量 if [ $# -ne 2 ]; then echo "错误: 脚本需要2个参数。" echo "用法: $0 \"提交描述\" \"版本号\"" echo "示例: $0 \"修复了登录问题\" \"v1.2.3\"" exit 1 fi # 分配参数 COMMIT_MESSAGE="$1" VERSION_TAG="$2" # 检查当前目录是否为Git仓库 if ! git rev-parse --git-dir > /dev/null 2>&1; then echo "错误: 当前目录不是一个Git仓库。" exit 1 fi echo "开始处理提交和版本标签..." echo "提交描述: $COMMIT_MESSAGE" echo "版本标签: $VERSION_TAG" # 检查是否有未提交的更改 if [ -n "$(git status --porcelain)" ]; then echo "检测到未提交的更改,正在提交..." # 添加所有更改到暂存区 git add . # 进行提交 git commit -m "$COMMIT_MESSAGE" if [ $? -ne 0 ]; then echo "错误: 提交失败。" exit 1 fi echo "✅ 更改已提交" else echo "提示: 没有未提交的更改,跳过提交步骤" # 检查是否有未提交的commit但未推送 LOCAL_COMMITS=$(git log @{u}..HEAD --oneline 2>/dev/null | wc -l) if [ $LOCAL_COMMITS -eq 0 ]; then echo "错误: 没有需要推送的提交。" exit 1 else echo "检测到 $LOCAL_COMMITS 个本地提交等待推送" fi fi # 检查标签是否已存在 #if git rev-parse "$VERSION_TAG" >/dev/null 2>&1; then # echo "错误: 标签 '$VERSION_TAG' 已经存在。" # exit 1 #fi # 创建标签 #git tag "$VERSION_TAG" #if [ $? -ne 0 ]; then # echo "错误: 创建标签失败。" # exit 1 #fi #echo "✅ 标签 '$VERSION_TAG' 已创建" # 推送到远程仓库并推送标签 echo "正在推送到远程仓库..." git push if [ $? -ne 0 ]; then echo "错误: 推送提交失败。" exit 1 fi #git push origin "$VERSION_TAG" #if [ $? -ne 0 ]; then # echo "错误: 推送标签失败。" # exit 1 #fi #echo "✅ 完成!提交已推送,版本标签 $VERSION_TAG 已创建并推送。"