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

如何将Git仓库二级子目录部署/推送到Heroku?

推送二级子目录到Heroku的解决方法

首先,你的核心问题是shell在解析路径时把reactnodejsapp/backend误识别成了单个目录名,尤其是在嵌套git subtree split命令的时候。下面给你两种可靠的解决办法:

方法一:直接使用git subtree push(推荐)

你之前尝试的git subtree push --prefix reactnodejsapp/backend heroku master其实是正确的语法,但可能是因为你在某些shell环境(比如Windows的CMD)里路径解析出了问题。试试下面的操作:

  • 如果用的是Git Bash或者类Unix终端(Mac/Linux),直接运行:
    git subtree push --prefix reactnodejsapp/backend heroku master
    
  • 如果是Windows CMD,可以把路径用双引号括起来:
    git subtree push --prefix "reactnodejsapp/backend" heroku master
    

这个命令会直接把reactnodejsapp/backend目录作为根目录推送到Heroku的master分支,不需要转义斜杠,正斜杠是Git识别的标准路径分隔符。

方法二:先拆分出临时分支再推送(更稳妥,避免shell解析问题)

如果第一种方法还是报错,你可以拆分出一个专门的分支,再把这个分支推送到Heroku,步骤如下:

  1. 先把reactnodejsapp/backend目录的内容拆分到一个临时分支(比如叫backend-branch):
    git subtree split --prefix reactnodejsapp/backend -b backend-branch
    
  2. 把这个临时分支推送到Heroku的master分支:
    git push heroku backend-branch:master --force
    
  3. (可选)如果不需要这个临时分支了,可以删除它:
    git branch -D backend-branch
    

这种方法把拆分和推送分开,避免了嵌套命令时的shell解析错误,成功率更高。

为什么之前的命令报错?

你之前用的嵌套命令git push heroku 'git subtree split --prefix reactnodejsapp/backend branch':master --force有两个问题:

  1. 引号内的branch是多余的,git subtree split不需要这个参数,正确的拆分命令是git subtree split --prefix reactnodejsapp/backend -b <分支名>
  2. 在某些shell里,单引号的解析会导致路径被错误拼接,分开操作就不会有这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:17:50