You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置从Bitbucket Cloud到本地文件夹的单向同步

Bitbucket 单向只读同步到本地文件夹解决方案

下面提供两种可直接落地的方案,按需选择即可:

方案1:定时轮询同步(无额外配置要求,上手最快)

无需修改Bitbucket端配置,也不要求本地服务器对公网开放,适合对同步实时性要求不高的场景。

  • 第一步:初始化本地仓库
    进入你要存放local文件夹的父目录,执行命令:
    git clone <你的Bitbucket仓库HTTPS/SSH地址> local
    cd local
    # 可选:如果不需要同步文件执行权限,执行下面的命令避免本地权限变动影响拉取
    git config core.fileMode false
    
    若使用SSH地址拉取,需要把本地服务器的SSH公钥添加到Bitbucket仓库的访问权限列表,避免拉取时验证身份失败。
  • 第二步:编写同步脚本
    新建sync_bitbucket.sh文件,内容如下:
    #!/bin/bash
    # 替换为你本地local文件夹的绝对路径
    cd /absolute/path/to/your/local
    git fetch origin
    # 强制覆盖本地所有改动,对齐上游当前分支的最新版本
    git reset --hard origin/$(git rev-parse --abbrev-ref HEAD)
    # 删除本地所有未被上游仓库跟踪的文件/文件夹,保证和上游完全一致
    git clean -fd
    
    给脚本添加执行权限:
    chmod +x sync_bitbucket.sh
    
  • 第三步:配置定时任务
    执行crontab -e编辑定时任务,添加如下内容(示例为每分钟同步一次,可自行调整时间规则):
    * * * * * /absolute/path/to/your/sync_bitbucket.sh > /dev/null 2>&1
    

方案2:Webhook触发同步(实时性高,无无效轮询)

适合要求上游变更后立刻同步的场景,需要你的本地服务器可以被Bitbucket的公网请求访问到。

  • 先完成方案1的前两步,初始化好仓库、写好同步脚本
  • 第二步:搭建简单的Web服务接收Bitbucket事件通知
    你可以用任意语言编写简单的HTTP服务,以下是Python示例:
    from flask import Flask
    import subprocess
    
    app = Flask(__name__)
    # 替换为你的同步脚本绝对路径
    SYNC_SCRIPT = "/absolute/path/to/your/sync_bitbucket.sh"
    
    @app.route("/bitbucket-sync", methods=["POST"])
    def sync():
        # 生产环境建议添加Bitbucket签名校验逻辑,避免恶意请求触发同步
        subprocess.run(SYNC_SCRIPT, shell=True, capture_output=True)
        return "success", 200
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=9000)
    
    启动服务后保证9000端口对公网开放。
  • 第三步:配置Bitbucket Webhook
    进入对应Bitbucket仓库的设置页面,找到Webhooks配置项,新增Webhook:
    • 回调地址填http://<你的服务器公网IP>:9000/bitbucket-sync
    • 触发事件仅勾选Repository push即可
      保存配置后,每次上游有代码推送,就会自动触发本地同步。

内容的提问来源于stack exchange,提问作者Dimster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:27:07