From 4f7da7cb8596646744fa6ddca1f437969cd95661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E5=A4=A9=E6=B4=9B?= Date: Mon, 30 Mar 2026 16:14:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(sync):=20=E4=BF=AE=E5=A4=8DGit=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新子模块配置 - 添加重要配置文件到版本控制 - 配置远程仓库同步 - 清理重复版本建议 --- scripts/git-sync-fix.sh | 220 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100755 scripts/git-sync-fix.sh diff --git a/scripts/git-sync-fix.sh b/scripts/git-sync-fix.sh new file mode 100755 index 0000000..86afaa1 --- /dev/null +++ b/scripts/git-sync-fix.sh @@ -0,0 +1,220 @@ +#!/bin/bash + +# Git同步问题修复脚本 +# 解决小说项目同步中断问题 + +set -e + +echo "🔧 开始修复Git同步问题..." +echo "===============================" + +WORKSPACE_DIR="/root/.openclaw/workspace" +cd "$WORKSPACE_DIR" + +# 1. 检查当前状态 +echo "📊 当前Git状态:" +git status --short + +echo "" +echo "1️⃣ 修复子模块问题..." + +# 检查子模块状态 +echo " 📁 子模块状态:" +git submodule status + +# 更新子模块 +echo " 🔄 更新子模块..." +git submodule update --init --recursive + +echo "" +echo "2️⃣ 清理重复版本..." + +# 统计重复文件 +echo " 📈 重复文件统计:" +find tomato-novel/ -name "*.md" -type f | grep -E "(备份|_fixed|_修复|_质检|_final)" | wc -l + +# 建议清理但不自动执行 +echo " ⚠️ 建议手动清理重复版本文件" +echo " 📝 示例命令:" +echo " find tomato-novel/ -name '*备份*.md' -exec rm -f {} \;" +echo " find tomato-novel/ -name '*_fixed.md' -exec rm -f {} \;" + +echo "" +echo "3️⃣ 添加未跟踪的重要文件..." + +# 重要配置文件 +IMPORTANT_FILES=( + "feishu_sync_system" + "git_sync_system" + "novels" + "VERSION_CONTROL.md" + "GIT_WORKFLOW.md" + "scripts/" + "memory/" +) + +echo " 📄 重要文件列表:" +for file in "${IMPORTANT_FILES[@]}"; do + if [ -e "$file" ]; then + echo " ✅ $file" + git add "$file" + else + echo " ❌ $file (不存在)" + fi +done + +echo "" +echo "4️⃣ 配置远程仓库..." + +# 检查现有远程仓库 +echo " 📡 当前远程仓库:" +git remote -v + +# 设置远程仓库(Gitea) +GITEA_URL="https://gitea.nevadalice.top:226/liyuchen/tomato-novel-workspace.git" + +echo "" +echo " 🚀 添加远程仓库..." +if ! git remote get-url origin >/dev/null 2>&1; then + echo " ➕ 添加远程仓库: $GITEA_URL" + git remote add origin "$GITEA_URL" +else + echo " 🔄 更新远程仓库URL" + git remote set-url origin "$GITEA_URL" +fi + +echo " 📡 更新后远程仓库:" +git remote -v + +echo "" +echo "5️⃣ 提交变更..." + +# 生成提交信息 +COMMIT_MSG="fix(sync): 修复Git同步问题 + +- 更新子模块配置 +- 添加重要配置文件到版本控制 +- 配置远程仓库同步 +- 清理重复版本建议" + +echo " 📝 提交信息:" +echo " $COMMIT_MSG" +echo "" + +git commit -m "$COMMIT_MSG" + +echo "" +echo "6️⃣ 创建备份分支..." + +# 创建备份分支 +BACKUP_BRANCH="backup-$(date '+%Y%m%d_%H%M%S')" +git branch "$BACKUP_BRANCH" +echo " 📂 创建备份分支: $BACKUP_BRANCH" + +echo "" +echo "7️⃣ 推送到远程仓库..." + +# 首次推送或强制推送 +echo " 🚀 推送到远程..." +git push -u origin master + +echo "" +echo "8️⃣ 设置自动同步..." + +# 创建自动同步脚本 +AUTO_SYNC_SCRIPT="$WORKSPACE_DIR/scripts/git-auto-sync.sh" +cat > "$AUTO_SYNC_SCRIPT" << 'EOF' +#!/bin/bash +# 自动同步脚本 + +cd /root/.openclaw/workspace + +# 拉取远程更新 +echo "[$(date '+%Y-%m-%d %H:%M:%S')] 🔄 开始自动同步..." +git fetch origin + +# 检查是否有冲突 +LOCAL=$(git rev-parse @) +REMOTE=$(git rev-parse @{u}) +BASE=$(git merge-base @ @{u}) + +if [ "$LOCAL" = "$REMOTE" ]; then + echo " ✅ 本地与远程一致" +elif [ "$LOCAL" = "$BASE" ]; then + echo " 🔄 拉取远程更新..." + git pull origin master + echo " ✅ 更新完成" +elif [ "$REMOTE" = "$BASE" ]; then + echo " 🚀 推送本地变更..." + git push origin master + echo " ✅ 推送完成" +else + echo " ⚠️ 检测到冲突,需要手动处理" + echo " 📝 请执行: cd /root/.openclaw/workspace && git status" +fi + +# 提交本地未提交的变更(如果有) +if ! git diff --quiet; then + echo " 📝 提交本地变更..." + git add . + git commit -m "chore(auto-sync): 自动提交未保存的变更" + git push origin master + echo " ✅ 本地变更已提交" +fi + +echo "[$(date '+%Y-%m-%d %H:%M:%S')] 🎉 自动同步完成" +EOF + +chmod +x "$AUTO_SYNC_SCRIPT" + +echo " 🤖 创建自动同步脚本: scripts/git-auto-sync.sh" + +echo "" +echo "9️⃣ 创建定时同步任务..." + +# 添加到crontab的建议 +CRON_JOB="*/30 * * * * cd $WORKSPACE_DIR && ./scripts/git-auto-sync.sh >/dev/null 2>&1" + +echo " ⏰ 建议的定时任务:" +echo " $CRON_JOB" +echo "" +echo " 📝 添加方法:" +echo " crontab -e" +echo " 添加行: $CRON_JOB" + +echo "" +echo "🔟 清理建议..." + +# 清理重复文件建议 +echo " 🗑️ 重复文件清理建议:" +echo " # 1. 备份文件" +echo " find tomato-novel/ -name '*_backup.md' -type f -delete" +echo "" +echo " # 2. 临时文件" +echo " find . -name '*.tmp' -type f -delete" +echo " find . -name '*.log' -type f -size +10M -delete" +echo "" +echo " # 3. 清理空目录" +echo " find . -type d -empty -delete" + +echo "" +echo "==================================" +echo "🎉 Git同步问题修复完成!" +echo "" +echo "📋 修复总结:" +echo " ✅ 子模块更新完成" +echo " ✅ 重要文件已添加到版本控制" +echo " ✅ 远程仓库配置完成" +echo " ✅ 提交本地变更" +echo " ✅ 创建备份分支: $BACKUP_BRANCH" +echo " ✅ 自动同步脚本就绪" +echo "" +echo "🚀 下一步建议:" +echo " 1. 手动清理重复文件(建议先备份)" +echo " 2. 设置定时同步任务" +echo " 3. 定期检查同步状态" +echo "" +echo "📞 需要帮助?使用以下命令:" +echo " ./scripts/git-daily.sh # 日常管理" +echo " ./scripts/git-auto-sync.sh # 手动同步" +echo " git status # 查看状态" \ No newline at end of file