【脚本】GitHub CLI 一键设置 Git Config


#!/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 账户保持一致。"

如果本文帮助到了你,帮我点个广告可以咩(o′┏▽┓`o)


评论
  目录