尝试在之前成功发布的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文件。
在我看来整个存储库的一切都很好。
答案 0 :(得分:9)
原来它是一个具有相同名称的远程标记,正如VonC在评论中所建议的那样。这可能是由一些先前中止的版本造成的。
虽然我通过手动检查远程存储库上的refs / tags目录找到了远程标记,但 git ls-remote --tags
也会显示它们,git push --verbose
也会显示有关该问题的更多信息。< / p>
要解决此问题,请先使用git fetch --tags
检索远程标记。
执行下一步的一种方法是通过更新pom.xml以获得更高的-SNAPSHOT版本(包括该快照的其他模块在同一项目中的任何引用)来绕过该版本标记,检查这些,并再次mvn release:clean; mvn release:prepare
。