将git存储库的一部分推送到heroku

d51*_*512 3 git heroku

我有一些由git管理的源代码,我想推送到Heroku.源代码包含多个不同的产品,其中一些产品将拥有自己的heroku实例.所以像这样:

src/
 lib-files/
 app1/
 app2/
 app3/
 other-files/
 package.json
Run Code Online (Sandbox Code Playgroud)

所以在heroku中,我有app1和app2的实例.这两个都依赖于./lib-files和package.json,但不依赖于app2或app3或其他文件.

我真的不想将包含所有文件的整个git存储库推送到每个应用程序的heroku.换句话说,我不希望app1实例包含app2或app3或其他文件的代码,因为它有很多不需要的数据,并且需要永远复制它.

我通过为每个应用程序创建新的git repos来解决这个问题(一个只包含app1需要的东西,一个用于app2等),然后将这些个人回购推送到heroku.这可行,但似乎有点hacky因为我有我必须管理的所有其他额外的存储库.此外,如果其他开发人员希望能够推送到heroku我需要让他们可以使用这些回购,也许可以通过检查他们到git(似乎奇怪).

有什么好办法来实现这个目标?


更新:

如果我创建了heroku repos所以他们只为每个应用程序包含适当的东西然后让heroku成为那些repos的主要远程(而不是github)怎么办?我仍然会有多个存储库来处理,但至少所有开发人员都有一个标准的位置来克隆它们(源代码仓库在github中,而heroku部署仓库在heroku中).对此的想法?

Joc*_*cke 5

我选择的解决方案是分支.您拥有包含所有文件的主分支,然后是每个仅包含其所需内容的应用程序的分支.

例如:

$ git init
$ git add .
$ git commit -m "Initial commit"
$ git checkout -b app1   # create a new branch for app1 derived from master
$ git rm what-you-dont-need-for-app1
$ git commit -m "Initial app1 commit"
$ git checkout master    # switch to master again
$ git checkout -b app2
$ # repeat same steps as for app1
Run Code Online (Sandbox Code Playgroud)

您还可以.gitignore在每个分支中使用唯一的-file来告诉git您不想提交的内容.