Heroku - git push/deployment 期间出错,此代码的相同版本已经构建

Posted

技术标签:

【中文标题】Heroku - git push/deployment 期间出错,此代码的相同版本已经构建【英文标题】:Heroku - Error during git push/deployment, The same version of this code has already been built 【发布时间】:2021-03-31 21:33:04 【问题描述】:

我在将 springboot 应用程序部署到 Heroku 时遇到问题。运行git push heroku master后,遇到如下错误:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  9.350 s
[INFO] Finished at: 2020-12-22T06:33:14Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project audit: Fatal error compiling: invalid target release: 11 -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :audit
remote:  !     Push rejected, failed to compile Java app.
remote: 
remote:  !     Push failed
remote:  !
remote:  ! ## Warning - The same version of this code has already been built:             31199a7acec03a3cb614ebaaf6c7720cee6684bd
remote:  !
remote:  ! We have detected that you have triggered a build from source code with version 31199a7acec03a3cb614ebaaf6c7720cee6684bd
remote:  ! at least twice. One common cause of this behavior is attempting to deploy code     from a different branch.
remote:  !
remote:  ! If you are developing on a branch and deploying via git you must run:
remote:  !
remote:  !     git push heroku <branchname>:main
remote:  !
remote:  ! This article goes into details on the behavior:
remote:  !   https://devcenter.heroku.com/articles/duplicate-build-version
remote: 
remote: Verifying deploy...
remote: 
remote: !   Push rejected to tesda8app.

我不知道为什么会发生此错误。我有两个远程存储库用于推送我的代码,一个来自 Heroku,一个来自 Github。我已经根据这个问题的答案尝试了以下命令,Heroku: If you are developing on a branch and deploying via git you must run:

git push heroku master:main

但错误仍然存​​在。我可以在 Heroku CLI 上尝试任何命令来解决这个问题吗?

【问题讨论】:

这只是一个警告。实际错误高于此。请edit您的问题并向我们显示上面的错误消息。 嗨,克里斯,感谢您指出这一点。我已经更新了错误日志 我不认为这是全部信息。请全部添加。 嗨@Chris 我更新了日志。这就是我收到的所有错误消息 【参考方案1】:

我和你在同一天遇到同样的错误,我不知道这是否是你正在寻找的答案,但我以某种方式解决了这个问题。我正在制作一个 Django-Rest-Api。

原因

您已经在同一个文件夹/目录中创建了两个 git 存储库,并将相同的代码推送到他们的头脑中,但不知何故 Heroku 不希望您这样做。 记住没有两个 git repo 在同一级别

关于git push heroku master:main 的事情

Heroku 仅从 main/master 分支部署您的代码 所以如果你从master以外的地方推送,你必须像git push heroku &lt;new branch&gt;:main一样使用它,使用:mainmaster是没有意义的(相同)。

解决方案

选项 1(不适合我)

我不记得我从哪里得到这个但你必须创建一个新的 git 分支, 做

git branch <new branch>
git checkout <new branch>
git add .
git commit -am "commit message"
git push heroku <new branch>:main

但它给出了同样的错误,因为你的目录中仍然有两个 git repo。

你可以像这样删除 repo。

rm -rf .git

我建议你在临时副本上做实验。

选项 2(为我工作)

我所做的只是复制里面的所有文件,创建一个不同名称的新文件夹,粘贴所有文件,删除旧文件,然后将新文件重命名为旧文件。通过这样做,您将拥有一个 git free 目录,然后您可以使用 git init 方法简单地创建一个新的 repo。

这是你应该如何创建

git init
heroku create
git add .
git commit -am "initial commit"
git push heroku master

这应该可以解决错误,它已经为我解决了,所以我不太可能再处理它了,但是如果我的答案在任何方面都不正确,请告诉我。

【讨论】:

【参考方案2】:

经过几次尝试,我认为问题的原因可能是 中断 git push heroku master 命令,然后重新执行相同的命令,导致错误下面:

remote:  !     Push failed
remote:  !
remote:  ! ## Warning - The same version of this code has already been built:             31199a7acec03a3cb614ebaaf6c7720cee6684bd
remote:  !
remote:  ! We have detected that you have triggered a build from source code with version 31199a7acec03a3cb614ebaaf6c7720cee6684bd
remote:  ! at least twice. One common cause of this behavior is attempting to deploy         code     from a different branch.
remote:  !

所以我所做的是,我推送了另一个提交,然后重试了相同的命令git push heroku master,这导致部署成功。

另外,感谢RainXCat's answer and insights,现在我知道 Heroku 不允许在同一个目录/文件夹中存在两个 git 存储库。

【讨论】:

【参考方案3】:

安装 Heroku CLI 下载并安装 Heroku CLI。

如果您还没有,请登录您的 Heroku 帐户并按照提示创建新的 SSH 公钥。

$ heroku login

克隆存储库 使用 Git 将项目的源代码克隆到本地机器。

$ heroku git:clone -a project







$ cd project

部署您的更改 对刚刚克隆的代码进行一些更改,然后使用 Git 将它们部署到 Heroku。

$ git add .
$ git commit -am "make it better"
$ git push heroku master

【讨论】:

以上是关于Heroku - git push/deployment 期间出错,此代码的相同版本已经构建的主要内容,如果未能解决你的问题,请参考以下文章

Heroku 上的 NPM 私有 git 模块

在 Heroku 上清理 git repo

如何在 heroku 中使用现有的 git 存储库

替换远程 git repo (Heroku)

HEROKU - 无法运行 git push heroku master [重复]

让 Heroku 运行非主 Git 分支