7

尝试在之前已成功发布的 maven 项目上执行发布。

当我执行mvn release:prepare时,系统会提示我输入发布标签和新的快照标签以及项目构建。

但是当它试图推送到遥控器时,我得到

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.0:prepare (default-cli) on project NeuralAnalysis: Unable to tag SCM [ERROR] Provider message: [ERROR] The git-push command failed. [ERROR] Command output: [ERROR] To ssh://gitosis@10.41.129.2/NeuralAnalysis.git [ERROR] ! [rejected] NeuralAnalysis-1.5.6 -> NeuralAnalysis-1.5.6 (non-fast-forward) [ERROR] error: failed to push some refs to 'ssh://gitosis@10.41.129.2/NeuralAnalysis.git' [ERROR] To prevent you from losing history, non-fast-forward updates were rejected

事实上,尝试 git push ssh://gitosis@10.41.129.2/NeuralAnalysis.git NeuralAnalysis-1.5.6手动执行也会以同样的抱怨退出。

表演git pull说“已经是最新的”。git branch表明我在“大师”上。git push origin给出“一切都是最新的”。

使用 Tower 查看存储库显示“master”、“origin/master”和“NeuralAnalysis-1.5.6”都是相同的,并且在最后一次提交中。工作目录包含 release.properties 和 pom.xml.releaseBackup 文件。

在我看来,整个存储库的一切都很好。

4

1 回答 1

14

原来它是一个同名的远程标签,正如 VonC 在评论中所建议的那样。这很可能是由一些以前中止的版本创建的。

虽然我通过手动检查远程存储库上的 refs/tags 目录找到了远程标记,但 git ls-remote --tags也会显示它们,并且git push --verbose也会显示更多关于一般问题的信息。

要解决此问题,首先使用 检索远程标签git fetch --tags

执行下一步的一种方法是通过更新 pom.xml 以具有更高的 -SNAPSHOT 版本(包括其他模块在同一项目中对该快照的任何引用)来简单地绕过该发布标记,签入并执行mvn release:clean; mvn release:prepare再次。

于 2012-06-04T15:37:40.437 回答