我目前正在尝试将我们的主分支合并到新的发布分支中,以查看发布是否正常(对于测试我合并分支'master'和'infra')。我使用Jenkins中的管道脚本执行此操作。 但是,我在每个合并的文件中都会遇到合并冲突。因此,例如,如果在分支 infra 中更改了文件foo / bar.txt,则我本地仓库中的结果如下所示:
$ git merge master
Auto-merging foo/bar.txt
Merge made by the 'recursive' strategy.
...
使用下面的脚本应该做同样的事情,我得到以下结果:
ERROR: Branch not suitable for integration as it does not merge cleanly: Command "git merge --ff c98425e0c22d1ad35749c5eca03ca44652e22c95" returned status code 1:
stdout: Auto-merging foo/bar.txt
CONFLICT (add/add): Merge conflict in foo/bar.txt
Automatic merge failed; fix conflicts and then commit the result.
我尝试了很多不同的设置但是无法让Jenkins自动合并分支。这是检查repo的部分,应该合并我使用片段生成器创建的部分:
checkout changelog: true, poll: true, scm: [$class: 'GitSCM', branches: [[name: '*/infra']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'LocalBranch', localBranch: 'infra'], [$class: 'PreBuildMerge', options: [fastForwardMode: 'FF', mergeRemote: 'origin', mergeStrategy: 'MergeCommand.Strategy', mergeTarget: 'master']]], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '<id>', name: 'origin', refspec: '+refs/heads/master:refs/remotes/origin/master', url: '<url to repo>']]]
编辑:我现在通过签出repo然后通过shell命令运行merge来使用解决方法:
checkout poll: false, scm: [$class: 'GitSCM', branches: [[name: "${buildGitRevision}"]], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'WipeWorkspace']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '<id>', url: '<url to repo>']]]
[...]
sh "git merge origin/master"
答案 0 :(得分:0)
如果合并产生冲突,则几乎不可能通过无人参与进程合并它们。显然,如果存在冲突,分支机构还没有准备好合并。
此外,您不希望通过无人参与的进程解决合并冲突:您怎么知道选择哪个版本?是的,您可以强制git选择git merge master -X theirs
或git merge master -X ours
的一个或另一个分支,但需要这样做表示工作流程问题。