# 🔑 GitHub权限配置指南

## ❌ 当前问题

推送到GitHub时遇到403错误：
```
remote: Write access to repository not granted.
fatal: unable to access 'https://github.com/fnvtk/Mycontent.git/': The requested URL returned error: 403
```

**原因**：GitHub现在需要使用Personal Access Token（个人访问令牌）而不是密码。

---

## ✅ 解决方案

### 方法1：使用Personal Access Token（推荐）

#### 步骤1：创建Personal Access Token

1. **登录GitHub**：https://github.com

2. **进入Settings**：
   - 点击右上角头像 → Settings

3. **创建Token**：
   - 左侧菜单找到 **Developer settings**
   - 点击 **Personal access tokens** → **Tokens (classic)**
   - 点击 **Generate new token** → **Generate new token (classic)**

4. **配置Token**：
   - **Note**: 填写"Soul创业实验项目"
   - **Expiration**: 选择"No expiration"（永不过期）或自定义时间
   - **Select scopes**: 勾选以下权限：
     - [x] **repo** (所有子选项)
     - [x] **workflow**
     - [x] **write:packages**
     - [x] **delete:packages**

5. **生成并复制Token**：
   - 点击底部 **Generate token**
   - **重要**：立即复制Token（只显示一次！）
   - Token格式：`ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`

#### 步骤2：配置本地Git

```bash
# 方法A：在URL中使用Token
cd "/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验"
git remote set-url origin https://<YOUR_TOKEN>@github.com/fnvtk/Mycontent.git

# 替换<YOUR_TOKEN>为你的实际Token
# 例如：
git remote set-url origin https://ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/fnvtk/Mycontent.git
```

```bash
# 方法B：使用Git凭据存储
git config --global credential.helper store
git push origin soul-content
# 然后在提示时输入：
# Username: fnvtk
# Password: <YOUR_TOKEN>
```

#### 步骤3：推送代码

```bash
git push origin soul-content
```

---

### 方法2：使用SSH（更安全）

#### 步骤1：生成SSH密钥

```bash
# 生成新的SSH密钥
ssh-keygen -t ed25519 -C "your_email@example.com"

# 按Enter使用默认路径
# 可以选择设置密码或直接按Enter

# 启动ssh-agent
eval "$(ssh-agent -s)"

# 添加SSH密钥
ssh-add ~/.ssh/id_ed25519
```

#### 步骤2：添加SSH公钥到GitHub

```bash
# 复制SSH公钥
cat ~/.ssh/id_ed25519.pub
# 手动复制输出的内容
```

1. 登录GitHub
2. Settings → SSH and GPG keys
3. 点击 **New SSH key**
4. Title: "Soul创业实验 MacBook"
5. Key: 粘贴刚才复制的公钥
6. 点击 **Add SSH key**

#### 步骤3：修改远程仓库URL

```bash
cd "/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验"
git remote set-url origin git@github.com:fnvtk/Mycontent.git
```

#### 步骤4：推送代码

```bash
git push origin soul-content
```

---

## 🚀 快速配置（推荐Token方式）

### 一键配置脚本

创建文件 `setup-github-token.sh`:

```bash
#!/bin/bash

echo "🔑 GitHub Token 配置"
echo ""
echo "请先创建GitHub Personal Access Token："
echo "https://github.com/settings/tokens/new"
echo ""
echo "权限勾选：repo, workflow, write:packages, delete:packages"
echo ""
read -p "请粘贴你的Token（ghp_开头）: " token

if [ -z "$token" ]; then
  echo "❌ Token不能为空"
  exit 1
fi

cd "/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验"

echo "📝 配置远程仓库..."
git remote set-url origin "https://${token}@github.com/fnvtk/Mycontent.git"

echo "✅ 配置完成！"
echo ""
echo "测试推送..."
git push origin soul-content

if [ $? -eq 0 ]; then
  echo ""
  echo "🎉 推送成功！"
  echo "🔗 查看：https://github.com/fnvtk/Mycontent/tree/soul-content"
else
  echo ""
  echo "❌ 推送失败，请检查Token是否正确"
fi
```

### 使用方法

```bash
# 1. 赋予执行权限
chmod +x setup-github-token.sh

# 2. 运行脚本
./setup-github-token.sh

# 3. 按提示粘贴Token
```

---

## 📝 配置后的上传流程

### 使用快速上传脚本

```bash
./quick-push.sh "提交信息"
```

### 手动上传

```bash
cd "/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验"
git add -A
git commit -m "更新内容"
git push origin soul-content
```

---

## 🔒 安全建议

### Token安全
1. ✅ **不要分享Token**：Token等同于密码
2. ✅ **定期更换**：建议3-6个月更换一次
3. ✅ **不要提交到代码**：不要把Token写入代码
4. ✅ **使用环境变量**：如需在代码中使用，用环境变量

### SSH安全
1. ✅ **设置密码**：为SSH密钥设置密码
2. ✅ **备份密钥**：安全保存私钥备份
3. ✅ **不要共享私钥**：私钥只保存在本地

---

## 🎯 完整上传流程

### 首次配置（仅需一次）

```bash
# 1. 创建GitHub Token
# 访问：https://github.com/settings/tokens/new
# 勾选权限：repo, workflow

# 2. 配置Git
cd "/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验"
git remote set-url origin https://<YOUR_TOKEN>@github.com/fnvtk/Mycontent.git

# 3. 测试推送
git push origin soul-content
```

### 日常使用

```bash
# 方法1：使用快速脚本
./quick-push.sh "更新内容"

# 方法2：手动上传
git add -A
git commit -m "更新内容"
git push origin soul-content
```

---

## ❓ 常见问题

### Q1: Token在哪里获取？
**A**: https://github.com/settings/tokens/new

### Q2: Token需要哪些权限？
**A**: 勾选 `repo`, `workflow`, `write:packages`, `delete:packages`

### Q3: Token只显示一次怎么办？
**A**: 如果忘记保存，需要重新生成新的Token

### Q4: 推送时还是要求输入密码？
**A**: 使用Token配置URL后不需要密码：
```bash
git remote set-url origin https://<TOKEN>@github.com/fnvtk/Mycontent.git
```

### Q5: 多台电脑如何同步？
**A**: 每台电脑配置相同的Token，或使用SSH方式

### Q6: Token过期了怎么办？
**A**: 重新生成Token并更新配置：
```bash
git remote set-url origin https://<NEW_TOKEN>@github.com/fnvtk/Mycontent.git
```

---

## 🔗 相关链接

- **创建Token**: https://github.com/settings/tokens/new
- **SSH密钥管理**: https://github.com/settings/keys
- **仓库地址**: https://github.com/fnvtk/Mycontent
- **分支地址**: https://github.com/fnvtk/Mycontent/tree/soul-content

---

## 📞 需要帮助？

如果配置过程中遇到问题：

1. 检查Token权限是否正确
2. 检查仓库地址是否正确
3. 检查网络连接是否正常
4. 查看详细错误信息

---

**创建时间**: 2026年1月14日  
**适用版本**: v1.3.1

**下一步**: 配置完Token后，运行 `./quick-push.sh` 即可快速上传！
