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

Mac Cron任务运行Git拉取失败 手动执行Shell脚本正常问题咨询

问题根因

crontab运行时使用非交互的独立shell环境,无法读取你当前登录用户的密钥环、Git凭证存储中保存的Bitbucket登录信息,因此会触发密码读取失败报错。

凭证配置方案(二选一即可)

方案1:SSH Key(更推荐自动化场景使用)

  • 执行ssh-keygen -t ed25519生成SSH密钥,生成过程中passphrase输入项直接留空,避免自动化执行时需要交互输入口令
  • 将生成的~/.ssh/id_ed25519.pub公钥内容,添加到你的Bitbucket账号的SSH密钥设置中
  • 进入本地仓库目录,将远程仓库地址从HTTPS格式切换为SSH格式:git remote set-url origin git@bitbucket.org:jacksonRaju124/你的仓库名.git
  • 手动执行一次git fetch验证连通性,验证通过后crontab即可正常调用

方案2:App Password配合HTTPS凭证存储

  • 进入Bitbucket账号设置页面生成App Password,权限勾选仓库读取相关权限
  • 执行git config --global credential.helper store配置Git凭证永久存储
  • 手动执行一次git fetch,用户名填写Bitbucket账号名,密码填写刚生成的App Password,执行成功后凭证会自动保存在~/.git-credentials文件中
  • 确保crontab的执行用户和你执行上述配置的用户为同一账号,否则会出现凭证读取失败的问题

自动执行git pull需要的额外配置

  • 脚本中所有路径替换为绝对路径,比如将cd ios_app_proj/src改成cd /home/你的用户名/ios_app_proj/src,crontab默认工作目录为执行用户家目录,相对路径会导致找不到仓库
  • 配置Git拉取合并策略,避免合并冲突时触发交互要求:执行git config --global pull.rebase false,如果需要用变基模式可以改成true
  • 建议在脚本中添加日志输出方便排查问题,修改后脚本示例:
cd /home/你的用户名/ios_app_proj/src && git fetch --all && git checkout master >> /var/log/git_auto_exec.log 2>&1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 06:30:05