配置Git Hook实现推送远程仓库时自动拉取代码至OneDrive文件夹
解决方案:用Git post-push钩子实现push后自动同步OneDrive仓库
刚好你的需求可以通过Git的客户端钩子完美解决,我来一步步帮你搞定:
1. 选对钩子:用post-push而不是post-receive
你提到的post-receive是服务器端钩子,只有Git仓库的管理员才能配置(比如GitHub官方),咱们普通用户用不了。而你需要的是在本地执行git push之后触发操作,所以要用post-push——这是Git专门为客户端push完成后准备的钩子。
2. 创建post-push钩子文件
打开你平时写代码、执行git push的那个本地仓库的.git/hooks文件夹,里面默认只有带.sample后缀的示例文件。你需要:
- 新建一个无后缀的文件,命名为
post-push;或者复制一个现有示例(比如post-update.sample),删掉.sample后缀并清空内容。
3. 编写同步脚本
把你需要的同步命令写入这个post-push文件,根据你的场景,用Windows批处理语法最直接:
@echo off cd "D:/Ewan/OneDrive/MyFolder" git pull origin <my-branch>
小提示:如果OneDrive里的仓库还没关联GitHub远程,你可以先在OneDrive文件夹里执行
git remote add origin <你的GitHub仓库URL>,之后直接git pull就不用写仓库地址了;如果不想关联,也可以写成git pull <你的GitHub仓库URL> <my-branch>。
4. 确保脚本能正常运行
Windows下一般不需要额外设置权限,但如果钩子没生效,可以:
- 检查文件名是否正确(必须是
post-push,不能加.bat或其他后缀) - 手动在命令行里跑一遍脚本里的命令,确认路径和Git命令都能正常执行
- 右键
post-push文件→属性→安全,确保当前用户有读取和执行权限
测试一下
写完后执行一次git push,去OneDrive的MyFolder里看看代码是不是自动更新了。如果有报错,直接看命令行输出的提示就能定位问题啦。
内容的提问来源于stack exchange,提问作者Xeway
相关产品推荐
相关产品推荐

