1

我正在合作一个项目,并从 Github 克隆了 repo,进行了一些更改并推送到 Heroku。现在,克隆的应用程序的所有密钥和密码都已硬编码,而不是在 ENV 变量中。

所以我创建了 ENV 变量,将文件添加到 .gitignore。所以这个应用程序在提交历史中仍然有这些键。我现在所做的是让作者在 Github 上创建一个新的 repo,从原始应用程序中删除 .git 文件并将新代码推送到新的 repo。

所以现在我已经克隆了新的应用程序,添加了一个新的远程 Heroku 应用程序。

heroku git:remote -a myapplication

我的问题是我无法将新应用推送到现有的 Heroku 应用。当我这样做时,我得到:

error: failed to push some refs to 'git@heroku.com:myapplication.git
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

所以 agit pull说一切都是最新的。

git remote -v输出

heroku  git@heroku.com:myapplication.git (fetch)
heroku  git@heroku.com:myapplication.git (push)
origin  git@github.com:author/myapplication.git (fetch)
origin  git@github.com:author/myapplication.git (push)

如何将新应用程序推送到现有的 heroku 应用程序?

更新

我跑了

git push -f heroku master

哪个推但我有错误

   you have not declared a Ruby version in your Gemfile.
   To set your Ruby version add this line to your Gemfile:"
   ruby '1.9.2'"

我以前从来没有指定过,现在所有设置的原始配置变量都不再存储在 Heroku 中。

4

2 回答 2

3

git pull默认情况下会从 GitHub 中提取,它已经包含了你所有的提交。

您可能需要:

  • git pull heroku
  • 清理文件(如果合并带回硬编码值)
  • 推到origin
  • heroku通过heroku命令推到。
于 2013-07-02T20:13:40.127 回答
1

Git 使用跟踪分支的概念来知道哪个远程分支链接到本地​​分支。

在您的情况下,您可能将本地分支(我想它是master)链接到origin/master. 因此,当您执行 a 时git pull,Git 会尝试从 中获取新内容git@github.com:author/myapplication.git,这不是想要的行为。

您必须使用以下命令更改跟踪的分支:

  • git branch --set-upstream-to heroku/my_branch

然后,您可以执行git pull现在将具有所需行为的操作。然后像往常一样推送到heroku。

于 2013-07-02T20:14:27.853 回答