# Git 自动上传脚本使用指南

本目录提供了三个版本的 Git 自动上传脚本，适用于不同操作系统。

## 📋 脚本说明

### 1. `git_push.sh` - Linux/Mac Bash 脚本
适用于 Linux 和 MacOS 系统。

**使用方法：**
```bash
# 给脚本添加执行权限（首次使用）
chmod +x git_push.sh

# 基本使用（交互式输入提交信息）
./git_push.sh

# 直接指定提交信息
./git_push.sh "feat: 添加新功能"
```

### 2. `git_push.bat` - Windows 批处理脚本
适用于 Windows 系统。

**使用方法：**
```cmd
# 基本使用（交互式输入提交信息）
git_push.bat

# 直接指定提交信息
git_push.bat "feat: 添加新功能"
```

### 3. `git_push.py` - Python 跨平台脚本（推荐）
适用于所有操作系统（Windows、Linux、Mac），需要 Python 3.6+。

**使用方法：**
```bash
# 基本使用（交互式输入提交信息）
python git_push.py

# 直接指定提交信息
python git_push.py "feat: 添加新功能"

# 多个单词的提交信息
python git_push.py "feat: 添加新功能和修复bug"
```

## 🚀 功能特性

所有脚本都包含以下功能：

1. **自动检测 Git 仓库**：检查当前目录是否为 Git 仓库
2. **显示更改状态**：显示将要提交的文件
3. **交互式确认**：在提交前确认操作
4. **智能提交信息**：
   - 可以直接通过命令行参数指定
   - 也可以交互式输入
   - 默认提供带时间戳的提交信息
5. **自动添加文件**：自动添加所有更改的文件
6. **错误处理**：友好的错误提示和处理
7. **颜色输出**：支持彩色输出（Python 版本）

## 📝 使用示例

### 示例 1：基本使用
```bash
# Linux/Mac
./git_push.sh

# Windows
git_push.bat

# Python（跨平台）
python git_push.py
```
脚本会：
1. 显示当前更改的文件
2. 询问是否继续
3. 请求输入提交信息（或使用默认）
4. 自动添加、提交并推送

### 示例 2：指定提交信息
```bash
# Linux/Mac
./git_push.sh "fix: 修复用户注册bug"

# Windows
git_push.bat "fix: 修复用户注册bug"

# Python
python git_push.py "fix: 修复用户注册bug"
```

### 示例 3：提交多个文件的更改
```bash
# 脚本会自动检测所有更改的文件
./git_push.sh "feat: 添加Docker支持和优化内存配置"
```

## ⚙️ 配置说明

### 默认分支
脚本会自动检测当前分支并使用该分支进行推送。

### 远程仓库
确保已配置远程仓库：
```bash
# 查看远程仓库
git remote -v

# 如果未配置，添加远程仓库
git remote add origin <your-repo-url>
```

### 身份验证
如果推送时遇到身份验证问题：

1. **HTTPS 方式**：
   - 需要输入用户名和密码（或访问令牌）
   - 可以配置凭证助手避免每次输入：
     ```bash
     git config --global credential.helper store
     ```

2. **SSH 方式**：
   - 配置 SSH 密钥更安全
   - 将远程 URL 改为 SSH 格式：
     ```bash
     git remote set-url origin git@github.com:username/repo.git
     ```

## 🔧 故障排除

### 问题 1：权限不足（Linux/Mac）
```bash
# 解决方案：添加执行权限
chmod +x git_push.sh
```

### 问题 2：Python 脚本无法运行
```bash
# 检查 Python 版本
python --version  # 需要 Python 3.6+

# 如果系统中有多个 Python 版本
python3 git_push.py
```

### 问题 3：推送失败（认证问题）
- 检查远程仓库地址是否正确
- 确认已配置 SSH 密钥或访问令牌
- 可以手动执行 `git push origin <branch>` 测试

### 问题 4：没有需要提交的更改
- 脚本会检测是否有未提交的更改
- 如果没有更改，可以选择拉取远程更新

## 💡 建议

1. **推荐使用 Python 版本**（`git_push.py`）：
   - 跨平台兼容性最好
   - 错误处理更完善
   - 支持彩色输出

2. **提交信息规范**：
   - 使用规范的提交信息格式，例如：
     - `feat: 添加新功能`
     - `fix: 修复bug`
     - `docs: 更新文档`
     - `chore: 更新配置`
     - `refactor: 代码重构`

3. **定期提交**：
   - 建议频繁提交小的更改
   - 避免一次性提交大量更改

## 📚 相关文档

- [Git 官方文档](https://git-scm.com/doc)
- [提交信息规范](https://www.conventionalcommits.org/)

