# auto-git **Repository Path**: liu-ritian/auto-git ## Basic Information - **Project Name**: auto-git - **Description**: 一个基于 Python + tkinter 的 Windows 桌面 GUI 应用,用于可视化管理本地 Git 仓库,支持手动 Push/Pull、后台自动推送、远程仓库创建与可见性管理等一站式功能。 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-03-30 - **Last Updated**: 2026-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: Git, GitHub, Gitee, 库备份, 自动上传 ## README # Auto-Git 仓库管理工具 一个基于 Python + tkinter 的 Windows 桌面 GUI 应用,用于可视化管理本地 Git 仓库,支持手动 Push/Pull、后台自动推送、远程仓库创建与可见性管理等一站式功能。 ## 功能特性 ### 基础管理 - **添加本地文件夹**:通过图形界面选择路径,一键纳入管理 - **初始化 Git 仓库**:为未初始化的文件夹执行 `git init` - **远程仓库管理**:分别配置 Gitee 和 GitHub 的远程地址,自动执行 `git remote add/set-url` ### 手动同步 - **Pull / Push**:一键拉取或推送代码 - **提交备注**:Push 前可自定义 `git commit` 的提交信息,方便记录每次修改内容 - **强制同步**:当远程有本地没有的提交导致 Push 被拒绝时,可一键 `git push --force` 强制覆盖远程(慎用) - **无 CMD 弹窗**:所有 Git 命令在后台静默执行,不会闪烁黑色命令行窗口 ### 冲突解决 - **智能冲突检测**:刷新状态时自动检测是否存在合并冲突 - **冲突解决工具**:提供"放弃合并"、"使用本地版本"、"使用远程版本"、"重置到 HEAD"四种快捷操作 ### 差异查看(四维度对比) - **远程差异**:`git diff HEAD..remote/branch`,查看远程仓库有哪些本地没有的提交 - **未推送提交**:`git diff remote/branch..HEAD`,查看本地已 `commit` 但还没 `push` 的提交差异,同时显示未推送的 commit 列表 - **工作区改动**:`git diff`,查看本地已修改但还没 `git add` 的文件差异 - **暂存区改动**:`git diff --cached`,查看已 `git add` 但还没 `commit` 的差异 ### 自动推送 - **定时自动推送**:为每个仓库独立设置自动推送开关与间隔时间,后台线程定时执行提交并推送 - **最小化到托盘**:支持勾选"点击关闭后最小化到任务栏",程序隐藏到系统托盘继续运行;取消勾选则直接退出 - **开机自启动**:支持通过 Windows 注册表设置是否随系统开机自动启动 ### 远程仓库 API 操作 - **在线新建仓库**:直接在 Gitee 或 GitHub 上创建新仓库,创建成功后自动获取 URL 并绑定到本地 - **修改仓库可见性**:一键将 Gitee/GitHub 上的远程仓库设为"公开"或"私有" - **远程状态刷新**:点击"🌐 刷新远程状态",自动查询所有仓库在 Gitee/GitHub 上的真实可见性并更新显示 ### 仓库列表可视化 - **左侧列表三栏显示**:仓库名称 | 自动推送 | 可见性 - **可见性状态显示**:支持显示 `公开`、`私有`、`G公`、`G私`、`H公`、`H私` 或 `-` - **状态自动缓存**:创建仓库、修改可见性、刷新远程状态时自动更新缓存,重启后依然可见 - **首次使用提示**:选中配置了远程地址但尚未获取可见性的仓库时,日志区会提示点击"🌐 刷新远程状态" ## 目录结构 ``` auto-git/ ├── main.py # 程序入口(源码运行) ├── app.py # tkinter 主窗口与界面逻辑 ├── git_manager.py # Git 命令封装 ├── auto_pusher.py # 后台自动推送线程 ├── config_store.py # JSON 配置持久化 ├── api_client.py # Gitee/GitHub API 客户端(创建仓库、修改/查询可见性) ├── build_exe.py # PyInstaller 打包脚本 ├── dist/ │ ├── AutoGit.exe # 打包后的可执行文件 │ └── config.json # 运行时自动生成的配置文件(含 Token 与可见性缓存,不上传 Git) ├── .gitignore # 已排除 config.json,防止泄露个人资料 └── README.md # 本文件 ``` ## 使用方式 ### 方式一:直接运行可执行文件(推荐) 双击运行: ``` dist\AutoGit.exe ``` 程序启动后: 1. 点击左上角 **"添加文件夹"**,选择你要管理的项目目录 2. 在左侧列表选中仓库,右侧会显示详情(可见性列默认显示 `-`,需刷新后更新) 3. 若该目录尚未初始化 Git,点击 **"初始化 Git 仓库"** 4. 在 **"远程仓库"** 区域填写 Gitee / GitHub 地址,或点击 **"新建仓库"** 在线创建并自动绑定 5. 使用 **"Pull"**、**"Push"**、**"查看差异"** 进行同步管理 6. 点击 **"🌐 刷新远程状态"** 获取各仓库在远程平台上的真实公开/私有状态 7. 在 **"自动推送设置"** 中开启自动推送并设置间隔分钟数,点击 **"应用设置"** ### 方式二:源码运行 确保本机已安装 Python 3 和 Git,然后在项目目录执行: ```bash python main.py ``` ### 重新打包 如需修改源码后重新生成 exe,执行: ```bash python build_exe.py ``` 打包完成后,新的 `AutoGit.exe` 会出现在 `dist/` 目录下。 ## API Token 配置说明 如需使用"新建仓库"、"修改可见性"和"刷新远程状态"功能,需要先在 **"系统设置"** 中配置对应平台的 Personal Access Token: ### Gitee Token 1. 登录 Gitee,进入 **设置 → 私人令牌 → 生成新令牌** 2. 勾选 `projects` 权限 3. 复制 Token 填入软件的 **"Gitee Token"** 输入框,点击 **"保存 Token"** ### GitHub Token 1. 登录 GitHub,进入 **Settings → Developer settings → Personal access tokens → Tokens (classic)** 2. 点击 **Generate new token (classic)** 3. 勾选 `repo` 权限 4. 复制 Token 填入软件的 **"GitHub Token"** 输入框,点击 **"保存 Token"** > **安全提示**:Token 与仓库可见性缓存保存在本地 `config.json` 中,该文件已被 `.gitignore` 排除,不会随代码上传到 Git 仓库,请放心使用。 ## 注意事项 - **Git 认证**:本工具仅调用系统已安装的 `git` 命令,HTTPS 认证或 SSH Key 请提前在本地配置好。 - **自动推送**:自动推送会在程序运行期间生效,关闭程序后自动任务停止。重新打开程序后会自动恢复后台服务。 - **配置存储**:仓库列表、自动推送设置、Token、可见性缓存等保存在 `config.json` 中。 - 源码运行时,文件位于程序脚本同级目录。 - 使用 `AutoGit.exe` 运行时,文件位于 `dist\config.json`(即 exe 同级目录),这样不会因为临时目录被清理而丢失配置。 - **强制同步与重置**:这些操作可能导致数据丢失,请确认后再执行。 ## 环境要求 - Windows 10/11 - Python 3.10+(仅源码运行时需要) - Git 2.x(已预装在系统中) - `pystray`(源码运行时需要安装:`pip install pystray`)