You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions自动生成Dev转Main PR显示历史提交的问题求助

自动从dev到main的PR显示全部历史提交问题

分支流程

  • 功能/问题开发基于issue_branch,从dev分支创建
  • 开发测试完成后,提交issue_branch到dev的PR,人工审核后合并
  • 当该PR合并到dev时,触发create-main-pr任务,自动创建dev到main的PR

问题

自动生成的main分支PR会显示所有过往版本的提交历史,哪怕只在issue_branch做了一处小改动(单个提交)也会出现这个问题,并非仅在 squash 合并时发生。

预期结果

该PR应仅展示上次发布以来的新提交。已知问题和SHA有关,但不清楚修复方案。

当前使用的GitHub Actions代码

create-main-pr:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    if: |
      github.event_name == 'pull_request' &&
      github.event.action == 'closed' &&
      github.event.pull_request.merged == true &&
      github.event.pull_request.base.ref == 'dev'
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          token: ${{ secrets.MY_SECRET }}

      - name: Create Pull Request
        id: create-pr
        uses: peter-evans/create-pull-request@v5
        with:
          token: ${{ secrets.MY_SECRET }}
          commit-message: "chore: promote dev to main"
          branch: promote-dev-to-main
          delete-branch: true
          title: "🚀 Promote Dev to Main"
          body: |
            ## Automated Promotion PR
            
            This PR was automatically created to promote changes from `dev` to `main`.
            
            ### ✅ Pre-merge Checklist
            - [ ] Changes have been reviewed
            - [ ] Tests are passing
            - [ ] Documentation is up to date
            
            ### 📝 Notes
            - This PR was automatically generated
            - Please review carefully before merging
            - Manual merge required
          labels: |
            automated
            promotion
          base: main
          branch-suffix: timestamp

已尝试的操作

发布完成后同步main与dev分支,创建issue_branch并做一处小改动,合并至dev后触发任务生成PR,但问题依旧。


修复方案

1. 确保发布后dev与main完全同步(根源性解决)

每次将main发布后,必须强制将dev重置为main的状态,避免历史分叉:

# 可在发布流程的Action中执行此逻辑
git checkout dev
git fetch origin main
git reset --hard origin/main
git push origin dev --force

这样后续从dev开出的issue_branch提交历史会完全基于最新的main,合并到dev后,dev和main的历史只会有新提交的差异,不会出现分叉。

2. 修改自动PR的创建逻辑,以main为基准创建临时分支

当前Action直接用dev分支创建PR到main,若历史分叉会显示所有差异提交。改成先基于main创建临时分支,再合并dev的变更,PR差异就只会是新提交:

create-main-pr:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    if: |
      github.event_name == 'pull_request' &&
      github.event.action == 'closed' &&
      github.event.pull_request.merged == true &&
      github.event.pull_request.base.ref == 'dev'
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          token: ${{ secrets.MY_SECRET }}

      - name: Prepare Promotion Branch
        run: |
          git checkout main
          git pull origin main
          git checkout -b promote-dev-to-main
          git merge origin/dev --no-ff --no-edit
          git push origin promote-dev-to-main

      - name: Create Pull Request
        id: create-pr
        uses: peter-evans/create-pull-request@v5
        with:
          token: ${{ secrets.MY_SECRET }}
          commit-message: "chore: promote dev to main"
          branch: promote-dev-to-main
          delete-branch: true
          title: "🚀 Promote Dev to Main"
          body: |
            ## Automated Promotion PR
            
            This PR was automatically created to promote changes from `dev` to `main`.
            
            ### ✅ Pre-merge Checklist
            - [ ] Changes have been reviewed
            - [ ] Tests are passing
            - [ ] Documentation is up to date
            
            ### 📝 Notes
            - This PR was automatically generated
            - Please review carefully before merging
            - Manual merge required
          labels: |
            automated
            promotion
          base: main
          branch-suffix: timestamp

3. 统一合并方式,避免历史混乱

确保所有合并到dev的PR使用保留完整提交历史的合并方式(非squash、非rebase),这样dev的历史是线性的,和main同步后不会出现SHA不一致的分叉问题。


内容的提问来源于stack exchange,提问作者mywn9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 12:45:58