dotfiles/dot_local/bin/executable_git-pushmulti

54 lines
1.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# --------------------------
# 擷取 remote list
# --------------------------
extract_list() {
local input="$1"
input="${input//[()]/}" # 去掉括號
IFS=',' read -ra result <<< "$input"
echo "${result[@]}"
}
# --------------------------
# 主邏輯
# --------------------------
# 預設值
remotes=()
branches=()
# 取出第一個參數:應該是 (remote1,remote2)
if [[ "$1" =~ ^\(.+\)$ ]]; then
remotes=($(extract_list "$1"))
shift
else
echo "❌ 請使用 (remote1,remote2) 的格式作為第一個參數"
exit 1
fi
# 剩下的參數是 branches若為空就抓當前 branch
if [[ $# -gt 0 ]]; then
branches=("$@")
else
current_branch=$(git symbolic-ref --short HEAD 2>/dev/null)
if [[ -z "$current_branch" ]]; then
echo "❌ 無法偵測目前所在 branch請指定"
exit 1
fi
branches=("$current_branch")
fi
# --------------------------
# 執行 git push
# --------------------------
for remote in "${remotes[@]}"; do
for branch in "${branches[@]}"; do
echo "🚀 Pushing to '$remote' (branch: '$branch')..."
git push "$remote" "$branch"
if [[ $? -ne 0 ]]; then
echo "❌ Push to '$remote' 失敗"
fi
done
done