如何使用GitHub API移除仓库待处理邀请?含脚本实现需求
移除GitHub仓库待处理邀请的Bash脚本
脚本预期使用方式
./remove_pending_invite.sh <name_of_repo> <their_github_username>
实现思路与完整脚本
要移除待处理邀请,需先通过GitHub API获取对应用户的邀请ID(无法直接通过用户名删除),再调用删除接口。结合你的过期邀请处理需求,脚本会自动筛选创建时间超过7天的邀请进行移除。
完整脚本代码
#!/bin/bash # 替换为你的组织/个人用户名 ORGANIZATION_NAME="your-org-name" # 检查参数数量是否符合要求 if [ $# -ne 2 ]; then echo "用法: $0 <name_of_repo> <their_github_username>" exit 1 fi REPO=$1 TARGET_USER=$2 # 计算7天前的UTC标准时间(用于筛选过期邀请) SEVEN_DAYS_AGO=$(date -u -d "7 days ago" +"%Y-%m-%dT%H:%M:%SZ") # 获取目标用户的过期待处理邀请ID INVITATION_ID=$(gh api repos/$ORGANIZATION_NAME/$REPO/invitations \ --jq ".[] | select(.login == \"$TARGET_USER\" and .created_at <= \"$SEVEN_DAYS_AGO\") | .id") if [ -z "$INVITATION_ID" ]; then echo "未找到用户 $TARGET_USER 在仓库 $REPO 的过期(7天以上)待处理邀请" exit 0 fi # 执行邀请移除操作 gh api -XDELETE repos/$ORGANIZATION_NAME/$REPO/invitations/$INVITATION_ID if [ $? -eq 0 ]; then echo "成功移除用户 $TARGET_USER 在仓库 $REPO 的待处理邀请" else echo "移除邀请失败,请检查权限或参数是否正确" exit 1 fi
使用前准备
- 确保已通过
gh auth login --with-token <github_token_here>完成GitHub CLI认证,token需拥有repo权限(组织仓库可能需要admin:org权限) - 替换脚本中的
ORGANIZATION_NAME为你的实际组织名或个人用户名 - 安装
jq工具(用于JSON数据过滤,Linux可通过apt install jq,macOS可通过brew install jq安装)
关键步骤说明
- 参数校验:脚本启动时检查传入参数数量,确保符合使用要求
- 时间筛选:通过
date命令生成7天前的UTC时间,配合jq过滤出超期邀请 - 获取邀请ID:调用GitHub API获取仓库待处理邀请列表,筛选目标用户的过期邀请ID
- 执行删除:调用DELETE接口移除对应ID的邀请,并返回操作结果
内容的提问来源于stack exchange,提问作者John Wickerson
相关产品推荐
相关产品推荐

