Преглед изворни кода

chore: add git commit push script

Codex пре 3 недеља
родитељ
комит
e160d5628d
1 измењених фајлова са 51 додато и 0 уклоњено
  1. 51 0
      git_commit_push.sh

+ 51 - 0
git_commit_push.sh

@@ -0,0 +1,51 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+cd "$SCRIPT_DIR"
+
+REMOTE="${GIT_REMOTE:-origin}"
+BRANCH="${GIT_BRANCH:-$(git branch --show-current)}"
+
+if [ -z "$BRANCH" ]; then
+  echo "ERROR: 当前不是普通分支,不能在 detached HEAD 状态下提交。" >&2
+  exit 1
+fi
+
+if [ -d .git/rebase-merge ] || [ -d .git/rebase-apply ] || [ -f .git/MERGE_HEAD ]; then
+  echo "ERROR: 当前仓库存在未完成的 merge/rebase,请先处理后再执行。" >&2
+  exit 1
+fi
+
+MESSAGE="${*:-}"
+if [ -z "$MESSAGE" ]; then
+  MESSAGE="chore: update code $(date '+%Y-%m-%d %H:%M:%S')"
+fi
+
+echo "Repo:   $(git rev-parse --show-toplevel)"
+echo "Branch: $BRANCH"
+echo "Remote: $REMOTE"
+echo "Msg:    $MESSAGE"
+
+git add -A
+
+if git diff --cached --quiet; then
+  echo "没有需要提交的修改。"
+  exit 0
+fi
+
+git commit -m "$MESSAGE"
+
+if git ls-remote --exit-code --heads "$REMOTE" "$BRANCH" >/dev/null 2>&1; then
+  git fetch "$REMOTE" "$BRANCH"
+  REMOTE_REF="refs/remotes/$REMOTE/$BRANCH"
+  if git show-ref --verify --quiet "$REMOTE_REF"; then
+    if ! git merge-base --is-ancestor "$REMOTE_REF" HEAD; then
+      echo "远端 $REMOTE/$BRANCH 有本地没有的提交,开始 rebase。"
+      git pull --rebase "$REMOTE" "$BRANCH"
+    fi
+  fi
+fi
+
+git push "$REMOTE" "HEAD:$BRANCH"
+echo "提交并推送完成:$(git rev-parse --short HEAD)"