Nessuna descrizione
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/bin/bash
  2. # 脚本用法:./git-commit-and-tag.sh "你的提交描述" "版本号"
  3. # 检查参数数量
  4. if [ $# -ne 2 ]; then
  5. echo "错误: 脚本需要2个参数。"
  6. echo "用法: $0 \"提交描述\" \"版本号\""
  7. echo "示例: $0 \"修复了登录问题\" \"v1.2.3\""
  8. exit 1
  9. fi
  10. # 分配参数
  11. COMMIT_MESSAGE="$1"
  12. VERSION_TAG="$2"
  13. # 检查当前目录是否为Git仓库
  14. if ! git rev-parse --git-dir > /dev/null 2>&1; then
  15. echo "错误: 当前目录不是一个Git仓库。"
  16. exit 1
  17. fi
  18. echo "开始处理提交和版本标签..."
  19. echo "提交描述: $COMMIT_MESSAGE"
  20. echo "版本标签: $VERSION_TAG"
  21. # 检查是否有未提交的更改
  22. if [ -n "$(git status --porcelain)" ]; then
  23. echo "检测到未提交的更改,正在提交..."
  24. # 添加所有更改到暂存区
  25. git add .
  26. # 进行提交
  27. git commit -m "$COMMIT_MESSAGE"
  28. if [ $? -ne 0 ]; then
  29. echo "错误: 提交失败。"
  30. exit 1
  31. fi
  32. echo "✅ 更改已提交"
  33. else
  34. echo "提示: 没有未提交的更改,跳过提交步骤"
  35. # 检查是否有未提交的commit但未推送
  36. LOCAL_COMMITS=$(git log @{u}..HEAD --oneline 2>/dev/null | wc -l)
  37. if [ $LOCAL_COMMITS -eq 0 ]; then
  38. echo "错误: 没有需要推送的提交。"
  39. exit 1
  40. else
  41. echo "检测到 $LOCAL_COMMITS 个本地提交等待推送"
  42. fi
  43. fi
  44. # 检查标签是否已存在
  45. if git rev-parse "$VERSION_TAG" >/dev/null 2>&1; then
  46. echo "错误: 标签 '$VERSION_TAG' 已经存在。"
  47. exit 1
  48. fi
  49. # 创建标签
  50. git tag "$VERSION_TAG"
  51. if [ $? -ne 0 ]; then
  52. echo "错误: 创建标签失败。"
  53. exit 1
  54. fi
  55. echo "✅ 标签 '$VERSION_TAG' 已创建"
  56. # 推送到远程仓库并推送标签
  57. echo "正在推送到远程仓库..."
  58. git push
  59. if [ $? -ne 0 ]; then
  60. echo "错误: 推送提交失败。"
  61. exit 1
  62. fi
  63. git push origin "$VERSION_TAG"
  64. if [ $? -ne 0 ]; then
  65. echo "错误: 推送标签失败。"
  66. exit 1
  67. fi
  68. echo "✅ 完成!提交已推送,版本标签 $VERSION_TAG 已创建并推送。"