文章目录
1.开发分支合并主线分支遇到的问题
# 1.主线分支:xxx-develop-master
# 2.开发分支:xxx-develop-master-v2
# 3.开发分支,2025/06/02日从主线分支创建,进行特性组任务开发
# 4.同时,主线分支,也会有相关功能开发,及代码合入,此时主线分支和开发分支,并行开发合入代码
# 5.2025/06/05日,开发分支开发自测完毕,申请合入主线,此时如果在Gerrit页面上直接“Cherry pick”,待Rebase合入时,始终报错:代码冲突,难以在Gerrit页面进行解决(特别是代码量特别大的时候)
# 6.问题:如何有效快速的把开发分支合入到主线分支??
注意:是两个分支的合并,开发分支迁移合并到主线分支
2.分支合并步骤
注意:主线分支和开发分支均暂停合入代码
2.1 本地主线分支创建主线临时分支
# 第一步:在本地,主线分支创建临时分支
git fetch origin xxx-develop-master:master-0605
# 命令:git fetch <远程仓库名称> <远程分支名称>:<本地分支名称>
# 解析:从远程仓库获取特定分支的更行,并将其映射到本地分支,本地分支若不存在则自动创建
2.2 本地开发分支创建开发临时分支
# 第二步:在本地,开发分支创建临时分支
git fetch origin xxx-develop-master-v2:master-v2-0605
2.3 切换到主线临时分支
# 第三步:切换到主线临时分支
git checkout master-0605
2.4 主线临时分支绑定远程仓库主线分支
# 第四步:主线临时分支绑定远程仓库主线分支
git branch -u origin/xxx-develop-master
# 尝试拉取最新分支
git pull --rebase
2.5 切换到PyCharm操作
# 第五步:一定要切换到Pycharm操作,Pycharm带页面化操作,能够更友好、更便捷地解决代码冲突
# Pycharm打开项目后,点击左下角Git图标,可以看到Local(本地分支),显示创建的:master-0605(主线临时分支),master-v2-0605(开发临时分支)
2.6 开发临时分支合并到主线临时分支
# 第六步:在Local本地代码分支下,选中开发临时分支:master-v2-0605
# 点击右键,点击:“Merge ‘master-v2-0605’ into ‘master-0605’”,含义是把 ‘master-v2-0605’ 分支 合入到 ‘master-0605’ 分支
2.7 借助PyCharm页面化解决冲突
# 第七步:此时,Pycharm页面,会自动弹出冲突代码的对话框
注意!注意!注意!:一定不要把对话框关闭!一定不要把对话框关闭!一定不要把对话框关闭!
# 正确的做法,双击冲突的代码文件,一个文件一个文件的解决(此步骤没有截图)
# 待所有冲突文件手动解决完毕后,Pycharm自动会把 ‘master-v2-0605’ 分支 合入到 ‘master-0605’ 分支,不用人工操作,等待即可,此时对话框会自动关闭
2.8 如果遇到缺失Change-Id
# 第八步:此步骤不是必须步骤,如果遇到,则可以安装此步骤的建议进行处理
# 借助2.7步骤解决完毕冲突之后,可以提交代码
git push origin HEAD:refs/for/xxx-develop-master
# 如果此时报错:
remote: ERROR: commit 8bc9e75: missing Change-Id in message footer
# 表明:此次提交记录缺少 Change-Id字段,无法推送到远端代码仓库
# 根据提示信息进行处理,执行:
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 xxx@IP:hooks/commit-msg ${gitdir}/hooks/
# 或者执行:
f="$(git rev-parse --git-dir)/hooks/commit-msg"; curl -o "$f" http://IP:81/tools/hooks/commit-msg ; chmod +x "$f"
# 最后执行:
git commit --amend --no-edit
# 执行:git commit --amend --no-edit 时,没有更换commit信息,Gerrit不让提交,此时不用处理,继续2.8步骤修改commnit信息即可
2.8 更新添加commit信息
# 第八步:借助Pycharm解决冲突之后,commit信息会自动填充,有时不符合Gerrit代码提交规则,不允许推送,此时需要更换commit信息
# 借助 Git Gui工具,在本地代码目录,右键,点击 “Open Git DUI here”
# 此时如果 Git Gui 页面没有内容的话,点击 “Amend Last Commit”,功能:Git中用于修改最近一次提交的操作
# 此时可以在 Git Gui 页面更新 “Commit Message” 信息
# 更新完毕后,在 Git Gui 页面点击 “Commit” 按钮,进行提交
2.9 推送代码到远程仓库
# 第九步:推送代码到远程仓库
git push origin HEAD:refs/for/xxx-develop-master
2.10 此时代码已经提交到Gerrit代码远程仓库
# 第十步:合入代码