首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Jenkins管道中执行git合并?

如何在Jenkins管道中执行git合并?
EN

Stack Overflow用户
提问于 2017-12-05 00:24:52
回答 3查看 9.2K关注 0票数 3

当Jenkins构建一个非master的git分支时,我希望在一个特定点自动合并到master中。我不想使用git插件的自动合并功能。

但是,我添加了stage:

代码语言:javascript
复制
stage('Merge master') {
  sh 'git merge master'
}

但我得到一个错误:

代码语言:javascript
复制
merge: master - not something we can merge

Jenkins似乎正在以一种奇怪的方式检查我的分支,这阻止了我能够合并master。要将master合并到我的分支中,我需要做什么?

EN

回答 3

Stack Overflow用户

发布于 2017-12-05 00:32:39

当Jenkins克隆您的存储库时,它并没有签出本地的master分支

下面的脚本应该允许您测试master的合并。

代码语言:javascript
复制
git fetch --all
git checkout master
git checkout branch-name
git merge master
票数 2
EN

Stack Overflow用户

发布于 2017-12-05 00:28:06

Jenkins可能只是将其头部设置为远程分支引用,而不是创建本地分支。

在我开始讨论如何解决这个问题之前,您是否考虑过如果合并遇到冲突会发生什么?因为可能会发生的情况是,它会将构建服务器置于一种意外状态,您必须手动清理该状态。这就是为什么除了本地(和交互)进行合并不是很典型的原因。

更新:为了完整起见,我从原始答案中保留了以下内容,但不起作用:

如果你想尝试一下,你可能需要说这样的话

git合并原始/母版

所以看起来Jenkins可能在做三件事中的一件:

它可能正在使用origin以外的远程名称。如果这就是全部,那么Edmund Dipple的回答应该会有所帮助。

它可能正在使用诸如--single-branch之类的选项进行克隆,或者以其他方式配置遥控器的refspec以使master不被获取。在这种情况下,您必须自己重新配置repo,或者包含一个显式refspec来获取。

它可能根本不是克隆。就如何处理它而言,这与第二种情况非常相似;我想我要补充的主要内容是,可以想象甚至没有配置遥控器。

因此,在我看来,下一步是让构建脚本显示本地存储库的配置(git config -l),查找remotefetch设置,并从中找出下一步。

票数 1
EN

Stack Overflow用户

发布于 2017-12-05 09:33:41

我相信你只需要Git插件就可以做到这一点。在Additional Behaviors下,有一个在构建之前进行合并的选项。此外,您还可以在Pipeline脚本中利用这一点

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47637728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档