如何将我的 git repo 的一部分推送到 Heroku?

Posted

技术标签:

【中文标题】如何将我的 git repo 的一部分推送到 Heroku?【英文标题】:How can I push a part of my git repo to Heroku? 【发布时间】:2011-08-24 01:11:41 【问题描述】:

我有一个已经在 Github 上的多模块应用程序。它由两个模块组成,一个是 android 应用程序,另一个是基于 Rails 的 Web 应用程序。所以我的项目的目录结构是这样的:

ProjectRoot
|
+-- web
|
+-- android
|
+-- .git

因此,我不能简单地将 cd 放入 ProjectRoot 并将我的应用程序推送到 Heroku,因为 Rails 应用程序的根文件夹是 ProjectRoot/web。有没有办法将web 文件夹推送到 Heroku?如果我把 web 变成一个 git 子模块,应该很容易做到这一点,但是我在 Git 上只有 5 个私有 repo,我更愿意为我的整个应用只使用 1 个 repo。

【问题讨论】:

How can I deploy/push only a subdirectory of my git repo to Heroku?的可能重复 【参考方案1】:

您可以使用git subtree push。它将以您的目录为根生成一个新的提交树,并推送它。

git subtree push --prefix web heroku master

完整的文档是here。

【讨论】:

这很好用。如果您想结合子树推送特定的标签或分支怎么办?像'git push heroku yourbranch:master'? 在这种情况下,您不能使用subtree push 快​​捷方式,而必须自己链接命令。例如:git push heroku `git subtree split --prefix web yourbranch`:master 仅供参考,git subtree 现在是核心 git 的一部分(只要您的 git 版本是最新的,就无需安装任何东西)【参考方案2】:

git subtree 命令(现在是内置的)是执行此操作的好方法。如果你想推一个分支的子树成为你的主人,你可以使用类似的东西:

git push --force heroku `git subtree split --prefix web HEAD`:master

【讨论】:

【参考方案3】:

您也可以使用 git 分支而不是子文件夹。如果你有 git 1.7.2 或更新版本,你可以简单地做git checkout --orphan android 来创建一个与你的主分支断开连接的分支(这里假设是 web 文件夹)。签出孤立分支后,运行 git rm -rf . 删除现有文件,然后将特定于 android 的文件复制到现在为空的根目录。

如果您想为每个模块使用单独的文件夹,您可以克隆存储库两次并使用此结构:

ProjectRoot
├── android
│   └── .git
└── web
    └── .git

【讨论】:

以上是关于如何将我的 git repo 的一部分推送到 Heroku?的主要内容,如果未能解决你的问题,请参考以下文章

在 Git 中,你如何检查你从命令行推送到 Github 中的哪个 repo?

如何授予 Git 'ForcePush' 权限以将 bfg-repo-cleaner 结果推送到 VSTS?

如何从本地 Windows 存储库推送到 Windows git 远程服务器

Symfony2,AWS Beanstalk:如何将供应商作为文件而不是 git-submodules 推送到 repo

GIT Repo 错误:无法推送到远程存储库

如何将我的节点应用程序成功推送到Heroku?