#!/bin/bash
# 拉取最新代码到本地仓库
git fetch
# 检查本地分支是否落后于远程分支,如果是,则先合并远程分支
if [ -n "$(git status -uno | grep 'Your branch is behind')" ]; then
echo "本地分支落后于远程分支,先合并远程分支"
git pull
echo "合并远程分支完成"
fi
# 获取当前分支
branch=$(git rev-parse --abbrev-ref HEAD)
# 检查是否存在未推送的本地 commit,如果有则先执行推送操作
if [ -n "$(git log origin/${branch}..HEAD --oneline)" ]; then
echo "存在未推送的本地 commit,先执行推送操作"
git push
echo "push 完成"
fi
# 检查是否存在未提交的修改
if [ -z "$(git status --porcelain)" ]; then
echo "当前仓库没有未提交的修改,很干净"
exit 1
fi
# 获取提交注释
if [ -z "$1" ]
then
echo "请输入提交注释(如果不想输入,再按一次空格键):"
read message
if [ -z "$message" ]
then
# echo "提交注释不能为空,请重新运行脚本并输入提交注释"
# exit 1
message="default commit message"
fi
else
message="$1"
fi
# 添加所有修改到 Git
git add .
# 提交修改
git commit -m "$message" --no-verify
# 输出提交信息
echo "提交注释:$message"
# 推送代码到远程 Git 仓库
git push
# 输出推送信息
echo "已将代码推送到远程仓库"