【发布时间】:2012-01-24 06:40:13
【问题描述】:
我的 git 存储库有 2 个分支:master 和 develop。我想要一个能够自动合并从开发到主控的所有更改的脚本。
我使用 Jenkins:Git 插件克隆存储库,然后运行此脚本(“版本”变量是作业参数):
# merge
git checkout -b develop origin/develop
git checkout master
git merge -Xtheirs --squash develop -m "v${version}"
# commit
git commit -m "v${version}"
# tag
git tag v${version} -m "v${version}"
# push
git push origin v${version}
我在测试存储库上尝试过,但失败了:
git 合并 -Xtheirs 开发
CONFLICT (delete/modify):test.txt 在开发中被删除,在 HEAD 中被修改。 test.txt 的版本 HEAD 留在树中。
自动合并失败;修复冲突,然后提交结果。
我如何自动解决这个冲突?我希望脚本始终根据“开发”分支添加/修改/删除文件,因为 master 从未被触及反正...
【问题讨论】:
-
您说“主人永远不会被感动”,但您还是会遇到冲突?如果它真的从不碰,一个简单的
git merge --ff-only origin/develop就足够了。 -
如果你想用
origin/develop版本替换 主版本而不记录合并提交,为什么还要麻烦merge --nosquash?只使用git checkout master && git reset origin/develop && git reset --soft HEAD@{1}或类似的东西不是更干净吗?
标签: git merge branch jenkins branching-and-merging