macOS 利用 LaunchAgents + GitHub 自动同步文件修改

在多台 Mac 间同步笔记或脚本可以使用 Git ,它能帮我们保留历史、解决冲突,但手动 git add/commit/push 容易忘。下面这套做法用 LaunchAgents 定时执行一个 Git 脚本,把指定仓库的修改自动提交并推送到 GitHub(或任意 Git 远端),既省事又留痕。

思路与准备

  1. 一个可访问的 Git 仓库,例如 [email protected]:demo/notes-sync.git,本机已配置好 SSH Key 或 Token。
  2. 仓库路径假设为 /Users/demo/Workspace/notes-sync,请替换成自己的目录。
  3. 写一个自动提交脚本,再用 LaunchAgents 每隔几分钟调用一次。

编写自动提交脚本

新建脚本 /Users/demo/Workspace/git-auto-commit.sh

#!/bin/zsh

REPO="/Users/demo/Workspace/notes-sync"
cd "$REPO" || exit 1

# 拉取远端,避免与他人改动冲突
git pull --rebase origin main

# 只在有变更时提交,避免空提交
if [[ -n "$(git status --porcelain)" ]]; then
git add .
git commit -m "auto-commit: $(date '+%Y-%m-%d %H:%M:%S')"
git push origin main
fi

赋权:

chmod +x /Users/demo/Workspace/git-auto-commit.sh

配置 LaunchAgents 定时执行

~/Library/LaunchAgents 新建 plist 文件 com.demo.git-auto-commit.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.demo.git-auto-commit</string>

<!-- 每 5 分钟执行一次 -->
<key>StartInterval</key>
<integer>300</integer>

<key>ProgramArguments</key>
<array>
<string>/bin/zsh</string>
<string>/Users/demo/Workspace/git-auto-commit.sh</string>
</array>

<!-- 日志便于排查 -->
<key>StandardOutPath</key>
<string>/Users/demo/Workspace/git-auto-commit.log</string>
<key>StandardErrorPath</key>
<string>/Users/demo/Workspace/git-auto-commit-error.log</string>
</dict>
</plist>

加载与调试:

launchctl load ~/Library/LaunchAgents/com.demo.git-auto-commit.plist
launchctl start com.demo.git-auto-commit # 立刻跑一次
launchctl list | grep git-auto-commit # 查看状态
tail -f /Users/demo/Workspace/git-auto-commit.log

如需停止或卸载:

launchctl stop com.demo.git-auto-commit
launchctl unload ~/Library/LaunchAgents/com.demo.git-auto-commit.plist

关键注意事项

  • 认证方式:优先用 SSH Key,若用 Token 写在脚本里,记得用只读权限并限制作用域,或在 Keychain 保存环境变量再在脚本里读取。
  • 分支一致性:脚本里固定 main(或 master),与远端分支保持一致;多人协作时保留 git pull --rebase 以减少冲突。
  • 执行频率StartInterval 300 秒适合笔记类场景;频率过高会增加推送次数,可按仓库活跃度调整。
  • 忽略敏感文件:在 .gitignore 中排除缓存、日志、临时文件,避免不必要的提交。
  • 错误兜底:查看 git-auto-commit-error.log,常见问题是网络不通、权限不足或本地/远端存在冲突。

这样配置后,Mac 会在后台定时把仓库的变更自动提交并推送,跨设备同步靠 Git 即可完成,同时保留完整历史记录。

deppwang wechat

评论默认使用 ,你也可以切换到 来留言。