#!/bin/bash
# 确保已安装 GitHub CLI
if ! command -v gh &> /dev/null; then
echo "GitHub CLI 未安装。请先安装 GitHub CLI: https://cli.github.com/"
exit 1
fi
# 确保已登录到 GitHub
if ! gh auth status &> /dev/null; then
echo "你尚未登录 GitHub CLI,请先登录:"
gh auth login
fi
# 获取 GitHub 用户名
echo "正在获取 GitHub 用户信息..."
USERNAME=$(gh api user --jq '.login')
if [ -z "$USERNAME" ]; then
echo "无法获取 GitHub 用户名,请确保你已正确登录。"
exit 1
fi
# 获取 GitHub 关联的电子邮箱
# 首先尝试获取公开邮箱
PUBLIC_EMAIL=$(gh api user --jq '.email')
# 如果公开邮箱为空(可能是因为邮箱隐私设置),则获取所有邮箱并使用主要邮箱或 noreply 邮箱
if [ "$PUBLIC_EMAIL" = "null" ] || [ -z "$PUBLIC_EMAIL" ]; then
echo "公开邮箱未设置,尝试获取主要邮箱或 noreply 邮箱..."
# 获取 noreply 邮箱
NOREPLY_EMAIL="${USERNAME}@users.noreply.github.com"
# 获取所有邮箱并检查是否有主要邮箱
EMAILS_JSON=$(gh api user/emails --jq '.')
if [ -n "$EMAILS_JSON" ]; then
# 尝试获取主要邮箱
PRIMARY_EMAIL=$(echo "$EMAILS_JSON" | grep -o '"email": "[^"]*".*"primary": true' | grep -o '"email": "[^"]*"' | cut -d'"' -f4)
if [ -n "$PRIMARY_EMAIL" ]; then
EMAIL="$PRIMARY_EMAIL"
else
# 使用 noreply 邮箱
EMAIL="$NOREPLY_EMAIL"
fi
else
# 使用 noreply 邮箱
EMAIL="$NOREPLY_EMAIL"
fi
else
EMAIL="$PUBLIC_EMAIL"
fi
# 设置 Git 全局用户名和邮箱
echo "设置 Git 用户名为:$USERNAME"
git config --global user.name "$USERNAME"
echo "设置 Git 邮箱为:$EMAIL"
git config --global user.email "$EMAIL"
# 验证设置
echo "验证 Git 设置:"
echo "用户名: $(git config --global user.name)"
echo "邮箱: $(git config --global user.email)"
echo "设置完成!你的 Git 账户信息现在与 GitHub 账户保持一致。"
本篇

【脚本】GitHub CLI 一键设置 Git Config
2025-06-19
下一篇

Tailscale+Caddy 暴露内网服务
2025-06-18