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

CircleCI使用git-ftp部署FTP时报Commit found错误如何解决

报错原因

这个错误是两个问题叠加导致的:

  • YAML语法错误导致后续命令完全未执行
    你在command的多行shell脚本块里,给git reset --hard和git ftp push前面加了YAML列表项才用的- 前缀,shell无法识别这是有效命令,实际部署流程跑到git ftp init就中断了,你写的push逻辑根本没有被执行。
  • git-ftp命令逻辑使用错误
    git ftp init仅适用于第一次向完全空白的FTP站点初始化部署的场景,只要FTP服务器上已经存在git-ftp生成的.git-ftp.log版本记录文件,再次执行init就会抛出你看到的fatal错误,提示需要用push命令同步增量变更。你每次CI运行都先执行init,只要第一次部署成功,后续所有执行都会卡在这一步。
    另外你配置里的git reset --hard是多余操作,CircleCI的checkout步骤拉取的就是对应提交的干净代码,不需要额外重置。

修复方案

直接用git ftp push的--auto-init参数替换原有init+push的写法即可,这个参数会自动检测FTP端有没有初始化记录:没有就自动执行初始化逻辑,有就直接走增量push,不需要手动拆分两个命令,同时修正YAML语法错误。
修正后的完整配置如下:

version: 2
jobs:
  deploy:
    docker:
      - image: circleci/node:8-browsers

    working_directory: ~/repo

    steps:
      - checkout
      - run: npm install
      - run: 
          name: Deploy Master Branch
          command: |
            sudo apt-get update
            sudo apt-get -qq install git-ftp
            echo "Deploying project ..."
            git ftp push --auto-init --user ${username} --passwd ${password} ${ftp_location}


workflows:
  version: 2
  master-deploy:
    jobs:
      - deploy:
          filters:
            branches:
              only: main

部署前确认你已经在CircleCI项目环境变量中正确配置了username/password/ftp_location三个参数,其中ftp_location要写全带目录的完整地址,比如ftp://你的FTP域名/目标部署目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:39:26