如何在使用 maven release-plugin 和 git 发布期间避免“更新被拒绝,因为远程包含工作”?

2024-07-04

我们最近从 SVN 迁移到 git。除了在 git 上发布的其他(意外)问题之外,我想知道如何处理以下问题:

当我在 Jenkins 上开始发布运行并且某些开发人员(意外地)在发布的第一阶段进行推送时,发布构建失败并出现以下错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project xyz: Unable to commit files
[ERROR] Provider message:
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] To ssh://[some-ip]/home/git/xyz
[ERROR] ! [rejected]        release/xyz-6.10 -> release/xyz-6.10 (fetch first)
[ERROR] error: failed to push some refs to 'ssh://[some-ip]/home/git/xyz'
[ERROR] hint: Updates were rejected because the remote contains work that you do
[ERROR] hint: not have locally. This is usually caused by another repository pushing
[ERROR] hint: to the same ref. You may want to first integrate the remote changes
[ERROR] hint: (e.g., 'git pull ...') before pushing again.
[ERROR] hint: See the 'Note about fast-forwards' in 'git push --help' for details.
[ERROR] -> [Help 1]

Jenkins 用于启动发布构建的 maven 命令是(我们在 Windows 上构建,因此不幸的是我们必须激活-DautoVersionSubmodules由于命令行太长git add包括所有修改过的pom.xml):

mvn -B -DdevelopmentVersion=xyz-6.10.0-rc3-SNAPSHOT -DreleaseVersion=xyz-6.10.0-rc2 -Dtag=xyz-6.10.0-rc2 -Dresume=false -e -Dgoals=deploy -DautoVersionSubmodules=true -DcommitByProject=true -P[some-profiles] -T1C release:prepare release:perform -Darguments=-T1C

有没有一种简单的方法来阻止其他用户推送(但允许 Jenkins 推送!)?或者任何其他稳定的解决方法 - 或最佳实践?

使用的版本:

  • Maven 3.3.9
  • Maven 发布插件 2.5.3
  • git 2.8.1
  • 詹金斯 1.629
  • Jenkins Maven 发布插件 插件 0.14.0
  • Windows 10

预先感谢您的帮助。


我希望您同意发布失败是正确的。在这种情况下,解决这个问题并不是什么大问题:更新项目并进行另一个版本。 解决此问题的最简单方法是:沟通:) 只需通知同事您计划发布此版本即可。 我听说过的另一个解决方案是:先创建一个分支,然后从这个分支发布。没有人会更改分支的内容,因此这应该是一个安全的解决方案,但需要额外的工作。由您决定是否值得。大多数时候并非如此。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在使用 maven release-plugin 和 git 发布期间避免“更新被拒绝,因为远程包含工作”? 的相关文章

  • 查找 Maven 使用的 Java 选项

    如何找到 Maven 正在使用哪些 Java 选项 Xmx Xms Xss 等 我发现有一种方法set它们是通过环境 MAVEN OPTS 实现的 现在我想要一种方法来确保它获得正确的设置 编辑 我相信它有所不同这个问题 https sta
  • 如何退出git中的提交编辑消息?

    我通常通过输入来提交git commit m initial 默认情况下 GNU nano 编辑器是 ubuntu Gnome 19 04 上 git config editor 中的选择 我不小心提交了我的更改输入git commit输入
  • 如何向 .gitignore 添加一些内容以使匹配不递归?

    如何添加一些东西到 gitignore这样匹配就不是递归的 例如 我想忽略目录foo和文件bar txt在当前目录中 但不在子目录中存在 我已经为我尝试过这个 gitignore file foo bar txt 但不幸的是 git 递归地
  • 通过 IIS 使用 GIT 智能 HTTP

    我最近读了 Scott Chacon 的文章 智能HTTP传输 http progit org 2010 03 04 smart http html 自那篇文章撰写以来 我希望通过 IIS windows 7 可以实现这一点 我还没有找到任
  • 如何在Openshift中打开数据库连接? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是我的 PHP dbcon 文件 基本上 我需要将我的 PHP 应用程序与 openshift MySQL DB 连接 这就是我所做的
  • JUnit 4.12:测试 util 类

    我在 Eclipse 中有一个名为 TdkUtils 的 Maven 项目 带有以下 pom xml 这是一个 utils 项目 所以我想创建一个jar 将其放入存储库中并在其他项目中使用它 在这个项目中我有这样的课程 Service sm
  • git 切换分支而不丢弃本地更改

    好吧 假设有一天我们碰巧做了一堆修改 当我们去提交它们时 我们注意到我们正在错误的分支上工作 我们如何强制git切换分支不丢弃本地更改 在等待回复时 我可能会以一种天真的方式解决这个问题 但我想知道是否有正确的程序 因为如果我说这之前没有发
  • 通过 maven for Spring Boot 应用程序为 AWS Beanstalk 创建 .ebextensions 的正确方法是什么

    我们必须定制hosts在 GitLab CI CD 管道期间动态生成 Spring Boot 应用程序的 Elastic Beanstalk 实例中的文件 为此 我们需要提供一个 ebextensions目录下有一个配置文件 如下所示 co
  • pip 从私人 github 仓库安装wheel版本

    我已经将我的私人仓库打包成一个轮子 轮子有不同的版本 是否可以使用 pip 从命令行并通过 requests txt 文件安装特定的 Wheel 版本的存储库 此功能pip 文档中没有提到 https pip pypa io en late
  • 如何使用git中的标签来管理软件版本[重复]

    这个问题在这里已经有答案了 我们使用 git 来管理我们的项目 每个项目都有一个分支 开发者 分期 生产 我想使用 git 标签来管理软件的版本 据我所知 我是否在分支上并添加了一些提交 然后我必须运行 git标签1 0 将 1 0 替换为
  • 处理本地存储库中的旧快照的最佳方法?

    我们有一个 Nexus 本地存储库管理器 用于处理我们所有的内部项目 以及外部存储库的镜像 对于我们的内部项目 我们只保留最新版本的快照构建 例如 如果我们有 ProjectX 1 0 1 1 和 1 2 SNAPSHOT 那么一旦 1 2
  • .gitattributes 文件对于 git 真的有必要吗?

    我最近读了一些关于 gitattributes 的文章 也发现了像这样的地方 https github com alexkaratarakis gitattributes https github com alexkaratarakis g
  • git diff:--cached 和 --staged 之间有什么区别

    要将分阶段与上次提交进行比较 git diff cached git diff staged 两个命令生成相同的结果 对吧 的文档git diff says staged是 的同义词 cached 所以是的
  • maven-failsafe-plugin 错误并构建成功?

    我的问题与此非常相似 maven failsafe plugin 失败并构建成功 https stackoverflow com questions 12279160 maven failsafe plugin failures and b
  • 在 Maven BOM(物料清单)中定义依赖范围是一个好习惯吗?

    我有一个pom xml像这样用作 BOM 物料清单 定义的依赖项之一是 test用于测试使用此 BOM 中的库的代码的工件 问题是 指定 test神器只是为了testBOM 本身的范围 还是应该将其留给 BOM 用户在其项目的 POM 中指
  • Windows:Apache Spark 历史服务器配置

    我想使用 Spark 的 History Server 来利用 Web UI 的日志记录机制 但我发现在 Windows 计算机上运行此代码有些困难 我做了以下事情 设置我的 Spark defaults conf 文件以反映 spark
  • 使用自定义 SSH 进行 Git 克隆,使用 GIT_SSH 错误

    我正在尝试使用自定义 SSH 命令克隆 Git 存储库 我设置SSH命令在GIT SSH环境中可变地运行 export GIT SSH usr bin ssh o StrictHostKeyChecking no i home me my
  • TortoiseGit / Winforms:合并时解析 Resource.resx

    我对 TortoiseGit 还很陌生 想知道如果 resx 文件发生冲突 如何在合并过程中解决它 例如 我可以从菜单中选择 使用他们的 尝试进行拉动和推动 但这是正确的方法吗 我可以以某种方式使用他们的并通过我的项目更改重建它吗 差异 以
  • MacOS 上的 Jenkins 发出“Docker:找不到命令”

    当使用 Pipeline 语法和 Docker 代理从 Jenkinsfile 运行作业时 管道失败并显示 Docker 找不到命令 我理解这意味着 1 Docker 未安装 2 Jenkins 未指向正确的 Docker 安装路径 我的情
  • 一个文件可以在 Git 中同时暂存和取消暂存吗?

    在处理另一个文件时 我编辑了README md然后跑了git add README md 当进行 git commit 时 我看到README md都在 要提交的更改 和 未暂存进行提交的更改 中 这有道理吗 在哪里 git我可以查看该文件

随机推荐