如何将我的 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