详细分析 ▾
运行时依赖
版本
Initial release of memory-git-sync — a skill to automate workspace backup and synchronization with a remote Git repository. - Validates local Git configuration, user identity, remote 'origin', and permissions before syncing. - Automatically detects and excludes large files (>95MB) to prevent push failures. - Stages, commits (using timestamped or custom messages), pulls, and pushes changes with intelligent conflict handling. - Outputs all actions with structured, prefix-based logs for easy status parsing. - Auto-configures branch upstream/tracking on initial push. - Includes fallback handling for common errors and recovery scenarios.
安装命令 点击复制
技能文档
Automates Git synchronization and backup of workspace memory to a remote repository.
Quick Start
bash ./scripts/sync.sh [COMMIT_MESSAGE]
Default message: chore: memory backup YYYY-MM-DD HH:MM
What It Does
- Validates Git repository, user config, and remote access
- Detects & excludes large files (>95MB) to prevent push failures
- Stages all changes automatically
- Pulls latest remote changes to avoid conflicts
- Commits changes with timestamped or custom message
- Pushes to remote, setting upstream if needed
Prerequisites
✓ Git repository initialized with origin remote
✓ git config user.name and git config user.email set
✓ Network access to remote repository
✓ Write permissions on repository directory
Execution Steps
| Step | Action | Success Output | Failure Output | Exit |
|---|---|---|---|---|
| 1 | Validate Git repo | [SUCCESS] Git repository found | [ERROR] Not inside a git repository | 1 |
| 2 | Check Git config | [SUCCESS] Git user configuration is valid | [ERROR] Git user.name not configured | 1 |
| 3 | Check remote | [SUCCESS] Remote 'origin' configured: [URL] | [ERROR] No 'origin' remote | 1 |
| 4 | Setup .gitignore | [SUCCESS] Gitignore file is ready | - | - |
| 5 | Scan large files | [SUCCESS] No large files detected | [WARNING] Large files detected | - |
| 6 | Detect changes | [SUCCESS] All changes staged | [INFO] No uncommitted changes | 0 |
| 7 | Fetch remote | [SUCCESS] Successfully fetched | [WARNING] Fetch failed (continues) | - |
| 8 | Check sync | [INFO] Local and remote synchronized | [WARNING] Branches diverged (auto-pull) | 1 |
| 9 | Commit | [SUCCESS] Changes committed | [ERROR] Commit failed | 1 |
| 10 | Push | [SUCCESS] Successfully pushed | [WARNING] No upstream (tries to set) | 1 |
| Done | Complete | [SUCCESS] Sync completed | - | 0 |
git pull --no-edit
Auto-sets upstream with git push --set-upstream origin [branch]Output Format
All messages use structured prefixes for LLM parsing:
[INFO] - Informational messages
[SUCCESS] - Actions completed successfully
[WARNING] - Non-fatal issues (script recovers)
[ERROR] - Fatal errors (requires intervention)
Common Scenarios
| Issue | Output | Resolution |
|---|---|---|
| Not in a Git repo | [ERROR] Not inside a git repository | Navigate to repo: cd /path/to/repo |
| Missing user.name | [ERROR] Git user.name not configured | git config user.name "Name" |
| Missing user.email | [ERROR] Git user.email not configured | git config user.email "email@example.com" |
| No origin remote | [ERROR] No 'origin' remote configured | git remote add origin |
| Large files detected | [WARNING] Large files detected | Automatically added to .gitignore |
| Pull conflicts | [ERROR] Pull encountered conflicts | Resolve manually, then run sync again |
| Network failures | [WARNING] Fetch/Push failed | Check connectivity, script continues locally |
Features
Security Notes
- Don't commit credentials to the repository
- Use SSH keys or credential helpers:
git config credential.helper osxkeychain - Review changes before syncing:
git status - Large files already pushed can't be auto-removed by this script
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制