Laravel Vapor+GitHub Actions双分支部署后测试分支落后问题咨询
问题解答
1. 这种“提交落后”的情况是否正常?
是正常的。原因是你每次将testing分支合并到main后,main分支会新增一个合并提交(默认git merge会生成新提交),而testing分支并未同步这些合并提交,因此GitHub会提示testing落后于main。随着合并次数增加,落后的提交数会持续累积。
但这种状态会导致分支历史越来越混乱,长期来看不利于协作和问题排查,建议调整流程解决。
2. 解决方法(适配deploy.yaml需保持不同的需求)
因为两个分支的.github/workflows/deploy.yaml必须独立,不能直接用main的版本覆盖testing的,以下是几种可行方案:
方案一:使用变基替代常规合并(单人协作推荐)
这个方案让testing分支的提交历史始终跟在main之后,避免生成多余的合并提交:
- 测试完成后,先切换到
main分支拉取最新代码:git checkout main && git pull origin main - 切换回
testing分支,执行变基:git checkout testing && git rebase main - 若出现冲突,针对
deploy.yaml文件选择保留testing分支的版本,解决完冲突后继续变基:git add .github/workflows/deploy.yaml && git rebase --continue - 强制推送
testing分支(变基改写了历史,需要强制推送):git push -f origin testing - 最后切换回
main,合并testing(快进合并,无新提交)并推送:git checkout main && git merge testing && git push origin main
方案二:合并main到testing时手动保留deploy.yaml
每次main更新后,主动合并main到testing,但手动保留testing的deploy.yaml:
- 切换到
testing分支:git checkout testing - 执行合并但不自动提交:
git merge main --no-commit - 撤销
deploy.yaml的合并修改,保留testing版本:git checkout HEAD -- .github/workflows/deploy.yaml - 完成合并提交并推送:
git commit -m "Merge main into testing, keep deploy.yaml" && git push origin testing
方案三:配置Git自动保留当前分支的deploy.yaml
通过Git属性设置,让合并时自动保留当前分支的deploy.yaml版本,无需手动操作:
- 在仓库根目录创建
.gitattributes文件,添加以下内容:.github/workflows/deploy.yaml merge=ours - 配置Git的合并驱动:
git config --global merge.ours.driver true - 之后每次将
main合并到testing时,Git会自动保留testing的deploy.yaml版本,直接执行合并并推送即可:git checkout testing && git merge main && git push origin testing
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

