# gitAutoCommit **Repository Path**: shilinnull/gitAutoCommit ## Basic Information - **Project Name**: gitAutoCommit - **Description**: 实现git每日自动提交 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-06 - **Last Updated**: 2025-09-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Auto Git Push (C++) 自动定时提交并推送 Git 仓库代码到远程仓库的 C++ 程序 ## 功能特性 - 交互式配置多个 Git 仓库 - 基于北京时间的每日定时执行 - 自动提交并推送到远程仓库 - 后台守护进程运行 - 详细日志记录到文件 - 支持不同分支和仓库管理 - 配置文件持久化存储 ## 编译安装 ```bash # 编译所有程序 make # 编译单个程序 make auto_git_push make kill_auto_git_push # 可选:安装到系统路径 sudo make install ``` ## 使用方法 ### 1. 配置免密码 按照如下要求进行配置 ![alt text](image.png) ### 2. 配置和启动自动推送服务 ```bash ./auto_git_push ``` 按照菜单提示进行配置: - 选择 1:配置仓库(设置要监控的仓库路径和分支) - 选择 2:配置时间(设置每天执行的北京时间) - 选择 3:查看当前配置 - 选择 4:执行一次测试(立即检查并提交) - 选择 5:开始监控(启动后台守护进程) - 选择 6:退出程序 ## 停止自动推送服务 ```bash ./kill_auto_git_push ``` 进程管理选项: - 选择 1:查看运行中的进程 - 选择 2:终止 auto_git_push 进程 - 选择 3:退出 ## 配置示例 ### 仓库配置 ``` 仓库数量: 2 仓库 1: - 仓库路径:`/root/project1` - 分支名称:`main`(默认) - 是否启用:`y`(默认) 仓库 2: - 仓库路径:`/home/user/project2` - 分支名称:`develop` - 是否启用:`y` ``` ### 时间配置 ``` - 执行小时:`18`(北京时间下午6点) - 执行分钟:`30`(30分钟) - 提交信息模板:`自动提交: {timestamp}` ``` ## 配置文件 程序会自动生成和读取配置文件: - `config.txt` - 保存仓库和时间配置 - `auto_git_push.log` - 运行日志文件 ### config.txt 示例 ``` # 自动Git推送工具配置文件 daily_hour=18 daily_minute=30 commit_message=自动提交: {timestamp} repo0_path=/root/project1 repo0_branch=main repo0_enabled=true repo1_path=/home/user/project2 repo1_branch=develop repo1_enabled=true ``` ## 工作流程 1. 配置仓库和执行时间 2. 启动后台守护进程(选择5) 3. 程序在指定时间自动执行以下操作: - 检查仓库是否有变更(`git status --porcelain`) - 如有变更,执行 `git add .` - 提交变更 `git commit -m "提交信息"` - 推送到远程仓库 `git push origin 分支名` 4. 所有操作记录到日志文件 ## 注意事项 - 确保所有仓库已配置远程仓库和推送权限 - **强烈建议配置 SSH 密钥**以避免密码输入 - 程序使用北京时间(UTC+8)进行调度 - 后台运行时,可通过日志文件查看运行状态 - 守护进程会在当前目录生成配置和日志文件 - 如需修改配置,需先停止服务,重新配置后再启动 ## 系统要求 - C++17 编译器(g++) - Git 命令行工具 - Linux/Unix 系统 - 足够的权限执行 fork 和创建守护进程 ## 故障排除 1. **查看日志**:`tail -f auto_git_push.log` 2. **检查进程**:`./kill_auto_git_push` 选择选项1 3. **手动测试**:运行程序选择选项4进行一次性测试 4. **权限问题**:确保对仓库目录有读写权限 5. **网络问题**:确保能正常访问Git远程仓库